Unity3D C #: курсор продолжает возвращаться к центру экрана?

#c# #unity3d #unity5

#c# #unity3d

Вопрос:

Я пытаюсь решить эту проблему уже 3 дня, но так и не смог решить ее сам. Что происходит, когда я открываю свой инвентарь, моя мышь теоретически должна отображаться и разблокирована. Теперь это почти работает, за исключением того, что, когда я пытаюсь на самом деле перемещать мышь, она почти мгновенно перемещается (как будто у нее большая сила тяжести) прямо в центр. Я использую Unity версии 5.4.0f3 и использую Windows 10.Кроме того, если это имеет какое-либо значение, я использую FPSController Unity Standard Assets (но я не думаю, что это так, поскольку блокировка и разблокировка моего курсора работает нормально, за исключением случаев использования моего инвентаря), и все это происходит в редакторе.

Мой код, который делает это (в скрипте инвентаризации)::

  if (isShown) { // If the inventory is opened

             Cursor.visible = true;
             Cursor.lockState = CursorLockMode.None;
 }
  

У меня нет другого кода, который влияет на курсор, кроме этого в отдельном скрипте:

  if (inventory.isShown || pauseManager.isPaused) { // If inventory is opened or game is paused
     Cursor.visible = true;
     Cursor.lockState = CursorLockMode.None;
     } else {
         Cursor.lockState = CursorLockMode.None;
     }
  

Любая помощь будет очень признательна ~

Ответ №1:

Единственное, о чем я могу думать, это то, что ваш Update () вызывает часть вашего контроллера FPS (который повторно блокирует курсор в середине экрана), даже когда вы находитесь в инвентаре или в меню паузы. Вы говорите, что ваша мышь действует так, как будто у нее большая сила тяжести или что-то в этом роде, что, вероятно, связано с тем, что ваша мышь не заблокирована на долю секунды, пока не достигнет любой части кода, которая снова фиксирует ее в центре экрана. Проверьте свою функцию Update() в скрипте и посмотрите, вызываете ли вы что-либо перед указанным вами оператором if, что может вызвать такое поведение. Надеюсь, это поможет!

Комментарии:

1. Обнаружено, что скрипт мыши контроллеров FPS сообщал ему о блокировке. Большое вам спасибо!

2. Потрясающе, рад, что вы это поняли. Счастливого кодирования!