В этом приложении есть панели с коллекциями кнопок, которые на «Play» отключены. Цель состоит в том, чтобы использовать массив GameOject для управления этими кнопками, чтобы за один раз можно было включить только одну кнопку. В ToggleGroup можно принудительно выбрать только один объект Toggle в любое время.
Несмотря на рост в навыках Unity c #, я с готовностью признаю, что являюсь скорее начинающим, чем промежуточным в навыках. Таким образом, любые рекомендации наиболее ценны.
Первым шагом было тестирование использования ToggleGroups, но Toggles не может принять скрипт c #, связанный с кнопками, который, когда включен, загружает Prefab из AssetBundle.
После того, как ToggleGroups были сняты со стола, я начал исследовать использование массива GameObjects. В нескольких источниках показано, как в упрощенном виде создать массив кнопок и после запуска () сделать кнопки неактивными. Но мне неясно, как эмулировать функциональность ToggleGroup в массиве.
Вот база моего скрипта "buttonMgtArray"
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class buttonMgtArray : MonoBehaviour
{
public GameObject[] button;
// Start is called before the first frame update
void Start()
{
button[0].SetActive(false);
button[1].SetActive(false);
button[2].SetActive(false);
}
}
В настоящее время нет ошибок, потому что я пытаюсьчтобы определить, как имитировать желаемое поведение в контексте массива GameObject.
Чтобы лучше проиллюстрировать поведение, которое я пытаюсь вызвать, этот скриншот может помочь объяснить цель.
КнопкаПоведение Объяснение
Мне очень приятно сообщить, что у @Stanley было очень элегантное решение, обеспечивающее эмуляцию переключения. Ключ должен был применить скрипт к кнопке, которая включала скрытую кнопку, которые являются ссылками массива. Вот окончательный код. Большое спасибо @ Stanley
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class buttonMgtArray : MonoBehaviour
{
public GameObject[] buttonArray;
public void DisableAllButtonsExcept(int i)
{
foreach (GameObject buttonGameObject in buttonArray)
{
buttonGameObject.SetActive(false);
}
buttonArray[i].SetActive(true);
}
}