как создать меню паузы в unity с помощью событий в unity vr

#c# #unity3d #events #menu #pause

Вопрос:

Я пытаюсь создать меню паузы в unity VR, которое я хочу, когда я нажимаю кнопку на контроллере, появляется меню, но я не знаю, как сделать так, чтобы меню появлялось при нажатии кнопки, изображение того, что у меня есть, о событии, но я, скорее всего, тоже сделал это неправильно

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

1. when I press a button on the controller the menu appears but I don't know how to make the menu appear when the button is pressed … Не могли бы вы уточнить это предложение? ^^ Я скорее думаю, что в настоящее время он исчезает , и вы бы вместо жестко закодированного bool false предпочли реализовать метод для его переключения, верно?

2. что я пытаюсь сделать, так это создать меню паузы, чтобы при нажатии кнопки открывалось меню, вот и все

Ответ №1:

В настоящее время вы настроили его так, что, когда вы нажимаете кнопку, она вызывает

 pauseMenu.SetActive(false);  

таким образом, он никогда не включит этот объект.

Вам скорее нужен специальный компонент, такой как, например

 public class PauseMenu : MonoBehaviour {  // Reference this vis the Inspector in case the PauseMenu is NOT  // the same object this component is attached to.   // Otherwise it will simply use the same object this is attached to  [SerializeField] private GameObject pauseMenu;   // Adjust this vis the Inspector  // Shall the menu initially be active or not?  [SerializeField] private bool initiallyPaused;   // Public readonly property so you can make other scripts depend on this  // e.g. do not handle User input while pause menu is open etc  public bool IsPaused =gt; pauseMenu.activeSelf;   // Additionally provide some events yourself so other scripts  // can add callbacks and react when you enter or exit paused mode  public UnityEvent onEnterPaused;  public UnityEvent onExitPaused;  public UnityEventlt;boolgt; onPauseStateChanged;   private void Awake ()  {  // As fallback use the same object this component is attached to  if(!pauseMenu) pauseMenu = gameObject;   SetPauseMode(initiallyPaused);  }   // This is the method you want to call vis your event instead  public void TogglePause()  {  // simply invert the active state  SetPauseMode(!IsPaused);  }   private void SetPauseMode (bool pause)  {  pauseMenu.SetActive(pause);   if(pause)  {  onEnterPaused.Invoke();  }  else  {  onExitPaused.Invoke();  }   onPauseStateChanged.Invoke(pause);  } }  

Прикрепите это к объекту меню паузы и в случае, если вместо этого ссылаетесь на PauseMenu.TogglePause метод.

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

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

2. @Imbackgaming ну и как именно вызывается ваше событие Left Secondary Activated ?

3. извините, я новичок в этом деле, что это значит?

4. Я не знаю ^^ как вы вызываете TogglePause метод? Я думал, что вы ссылаетесь на это сейчас в своем случае Left Secondary Activated … Я понятия не имею, как/где это вызывается, но кажется, что это просто не происходит в виртуальной реальности

5. это сработало, когда я запустил его на ПК vr, но когда я запустил его на Android, он не проснулся’