Unity GameObject数组可用于模拟类似ToggleGroup的行为

问题描述 投票:0回答:1

[此应用中的面板带有禁用的“播放”按钮集合。目的是利用GameOject数组来管理这些按钮,以便一次只能启用一个按钮。在ToggleGroup中,可以随时仅强制选择一个Toggle对象。

尽管Unity c#技能在不断发展,但我很容易承认自己是初学者,而不是中级技能。因此,任何指导都将受到赞赏。

[第一步是测试ToggleGroups的使用,但是Toggles无法接受与按钮关联的c#脚本,该脚本在启用后会从AssetBundle加载Prefab。

一旦ToggleGroups从桌面上移开,我一直在研究GameObjects数组的使用。几个资源显示了如何以简单的方式创建按钮数组,以及如何在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 Array的上下文中模拟所需的行为。

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

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);
    }

}
c# arrays unity3d gameobject
1个回答
0
投票
有更多的方法可以执行此操作,也可以有更好的方法,但是这种方法确实有效。

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


之前Before running code


之后After running code

保留按钮号2,因为数组从0开始

enter image description here

更改onClick事件中的参数以匹配其在数组中的位置
© www.soinside.com 2019 - 2024. All rights reserved.