【问题标题】:Can a Unity GameObject Array be used to emulate ToggleGroup like behaviorUnity GameObject Array 可以用来模拟 ToggleGroup 的行为吗
【发布时间】:2019-10-03 00:34:31
【问题描述】:

这个应用程序的面板带有一组按钮,这些按钮在“播放”状态下被禁用。目标是利用 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】:

    如果我理解正确,您希望使用单选按钮等按钮。 我看到还没有人回答你的问题,所以我会尽快解决。

    有更多的方法和更好的方法,但这个确实有效。

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

    之前


    之后

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

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

    【讨论】:

    • 你好@Stanley。感谢您的快速回复。是的,该操作很像一个单选按钮,但在这种情况下,除了选定的按钮之外,所有其他按钮都不是活动的。我将在今晚晚些时候在这里尝试您的建议,并很乐意回复并更新我的进度。
    • @muckletone 太棒了!期待您的来信
    • 你好@Stanley。这是我的发现。我做了一个小的调整,我将“DisableAllButtonsExcept”设置为“3”,这样所有按钮在启动时都不会启用。使用您的示例,不会发生切换。换句话说,如果启用“元素 0”,然后启用“元素 1”,则不会禁用“元素 0”。我怀疑我很难解释“切换”按钮的含义。今晚我会在这方面再玩一会儿,我想你给了我一些开始,对此我非常感激。
    • @muckletone 您希望除一个按钮之外的所有按钮都处于活动状态,还是一次只激活一个按钮?并且将值设置为一个数字而不是根据单击的按钮动态更改它是行不通的
    • 您好,谢谢@Stanley。我会很快完成这个步骤并让你知道。我将在原始问题中添加带有注释的屏幕截图,以更好地描述我试图解决的解决方案。再次,非常感谢。
    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多