c# - 当其中一个开关打开时切换其他开关

标签 c# unity-game-engine

我在脚本中定义了一系列切换。它们一开始就全部关闭。当用户单击其中一个开关时,该开关应打开,而其他开关应切换至关闭状态。基本上状态切换上只能有“一个”。我如何实现这一目标?

目前使用此脚本,当用户单击其中一个开关时,所有开关都会关闭。

public Toggle[] toggle;

 void Start () {
        for (int i = 0; i < toggle.Length; i++) {
            int idx = i;
            toggle[idx].onValueChanged.AddListener (delegate {
                ToggleValueChanged (toggle[idx], idx);
            });
        }
    }

    public void ToggleValueChanged (Toggle change, int index) {
       
        for (int i = 0; i < toggle.Length; i++) {
            if (i == index) {
                return;
            } else {
                if (toggle[i].isOn) {
                    toggle[i].isOn = false;
                }
            }
        }

    }

最佳答案

Unity 有一个名为 ToggleGroup 的组件,可以让您做到这一点。

ToggleContainer 父对象:

ToggleContainer GameObject

在每个 Toggle 组件中引用 ToggleGroup 对象如下:

enter image description here

场景层次结构:

Scene Hierarchy

概述:

https://gfycat.com/bossyscenteddorado

关于c# - 当其中一个开关打开时切换其他开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69251694/

相关文章:

c# - 'System.Web.UI.MasterPage' does not contain a definition for 错误如何解决

c# - Unity Alpha 漫反射 mask 着色器

iOS Unity Asset Bundle 下载限制 - 粒子效果、动画和动画资源

c# - 如何将 lerp 转换为三次缓动?

c# - 将文件上传到不同的服务器

json - 使用 MiniJSON 解析嵌套 JSON (Unity3D)

python - C# Unity - 从统一的相机中提取像素数组并在 python 中显示

c# - 如何在Unity中获取分配给游戏对象的所有 Material

c# - Web Api 使用 DataAnnotations 验证可选 Url

c# - 单例时间跨多个区域触发 Azure Function