Unity GameObject Array 可以用来模拟 ToggleGroup 之类的行为吗

Can a Unity GameObject Array be used to emulate ToggleGroup like behavior

此应用程序的面板包含已禁用的 "Play" 按钮集合。目标是利用 GameOject 数组来管理这些按钮,以便一次只能启用一个按钮。在 ToggleGroup 中,任何时候都可以强制只选择一个 Toggle 对象。

虽然在 Unity c# 技能方面有所提高,但我很乐意承认在技能方面比中级更初级。因此,非常感谢任何指导。

第一步是测试 ToggleGroups 的使用,但是 Toggles 不能接受与按钮关联的 c# 脚本,当启用时,它会从 AssetBundle 加载预制件。

从 table 移除 ToggleGroup 后,我一直在研究游戏对象数组的使用。几个来源展示了如何以简单的方式创建一个按钮数组,并在 Start() 上使按钮处于非活动状态。但我不清楚如何在数组中模拟 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 数组的上下文中模拟所需的行为。

为了更好地说明我试图调用的行为,此屏幕截图可能有助于解释目标。

Button Behavior Explanation

我很高兴地报告@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);
    }

}

如果我对你的理解正确的话,你想像使用单选按钮一样使用你的按钮。 我看到还没有人回答你的问题,所以我会尽快解决。

有更多和更好的方法可以做到这一点,但这个确实有效。

public void DisableAllButtonsExcept(int i) {
    foreach(GameObject buttonGameObject in buttonArray) {
        buttonGameObject.SetActive(false);
    }
    buttonArray[i].SetActive(true);
}

之前


之后

Button number 2 is kept because arrays start at 0

更改 onClick 事件中的参数以匹配其在数组中的位置