2015-07-07 4 views
0

Я хочу, чтобы курсор был невидимым и заблокирован в середине экрана во время игры, но когда в инвентаре или в меню я хочу, чтобы курсор был видимым и разблокированным. Я сделал что-то вроде этого:Unity3D видимость курсора мыши - C#

if (tribe == game) { 
      Cursor.lockState = CursorLockMode.Locked; 
      Cursor.visible = false; 
      Time.timeScale = 1; 
     } else if (tribe == menu) { 
      Cursor.lockState = CursorLockMode.Confined; 
      Cursor.visible = true; 
      Time.timeScale = 0; 
     } else if (tribe == inventory) { 
      Cursor.lockState = CursorLockMode.Confined; 
      Cursor.visible = true; 
      Time.timeScale = 0; 
     } 

условие выполнено надлежащим образом и работать (если я не должен называть его в каждом кадре), но замок состояние и видимость прослушиваются. Иногда это работает, иногда нет (возможно, это вызвано тем, что я запускаю его в Unity Editor), и он ведет себя странно. Должен ли я назвать его кадром, или я использую его неправильно или что-то в этом роде?

+0

Попробуйте называть его рамкой? Может быть, ваш код где-то еще устанавливает состояние блокировки курсора? Пробовали ли вы регистрировать состояние Cursor.lockState и т. Д. Каждый кадр? – zander

+0

Я назвал это все и не работал. Но я что-то вижу неправильно - меню не приостановило мою игру должным образом. Может быть, ошибка здесь, но я так не думаю, поэтому, если кто-то знает, как это решить, ответьте. – Konowy

+0

Проверяете ли вы утверждения? Я думаю, что поставить заявления в журнале, чтобы увидеть, как приложение достигает его правильно. –

ответ

0

Может ли ваш цикл обновления выдавать ошибку, которая не была обнаружена, и предотвратить вашу логику? Мы увидели несколько проблем, в которых были ошибки, но не отображались в консоли, мы поставили попытку поймать весь блок обновлений и сузили оттуда.

+0

Я думаю, что это невозможно. Я тестировал это много времени, и это не ошибка. Единственная проблема, что может быть здесь, это моя ошибка где-то, но это только сценарий, когда я использую это, поэтому я не знаю. – Konowy

0

Все элементы курсора должны выполняться в методе «OnGUI» вашего скрипта. Ex:

void OnGUI() 
{ 
    Cursor.visible = false; 
    Cursor.lockState = CursorLockMode.Locked; 
} 
Смежные вопросы