Estoy haciendo un juego 2d en unity. Estoy usando los métodos de alternancia de la interfaz de usuario y deseo hacer que uno de ellos se apague cuando el otro esté encendido. El método que probé es hacer el siguiente código a continuación (InfiniteMode y CampaignMode son los nombres de los dos conmutadores):
if (InfiniteMode.isOn) { PlayInfinite(); CampaignMode.onValueChanged.Invoke(false); } if (CampaignMode.isOn) { PlayCampaign(); InfiniteMode.onValueChanged.Invoke(false); }Cualquier ayuda sobre lo que puedo hacer para lograr esto sería genial.
Según tengo entendido, desea tener dos conmutadores de UI Toggles de usuario que actúen como un grupo, cuando uno de ellos está activado, el resto de los elementos están desactivados. Para hacer esto, puede usar el componente Toggle Group de Unity UI . Puede encontrar más información al respecto aquí: Toggle Group documentation .
Si observa el componente Toggle , hay una variable de Group . Si crea un GameObject vacío dentro de su lienzo y le agrega el componente Toggle Group y asigna ese objeto Toggle Group a todos sus Toggle que desea que formen parte de ese grupo, debería funcionar.
Puede agregar oyentes a sus conmutadores de esta manera:
[SerializeField] private Toggle myToggleVar; private void Start() { // UI event listeners myToggleVar.onValueChanged.AddListener(delegate { onToggleExec(); }); } private void onToggleExec() { Debug.Log("Toggled!") //here you need to manipulate your other toggle }