如何在一个开关打开时关闭另一个开关

时间:2021-01-13 13:00:56

标签: unity3d togglebutton unity-ui

我正在制作一个统一的 2d 游戏。我正在使用 UI 切换方法,并希望在打开另一个时关闭其中一个。我尝试过的方法是执行以下代码(InfiniteMode 和 CampaignMode 是两个切换的名称):

if (InfiniteMode.isOn)
    {
        PlayInfinite();
        CampaignMode.onValueChanged.Invoke(false);
    }

    if (CampaignMode.isOn)
    {
        PlayCampaign();
        InfiniteMode.onValueChanged.Invoke(false);
    }

我能做些什么来实现这一目标的任何帮助都会很棒。

2 个答案:

答案 0 :(得分:2)

据我所知,您希望有两个 UI Toggles 作为一个组,当其中一个打开时,其余项目关闭。为此,您可以使用 Toggle Group 中的 Unity UI 组件。您可以在此处找到更多信息:Toggle Group documentation

如果您查看 Toggle 组件,则有一个 Group 变量。如果您在 Canvas 中创建一个空的 GameObject 并向其添加 Toggle Group 组件并将该 Toggle Group 对象分配给您希望成为其中一部分的所有 Toggle那群人 它应该可以工作。

答案 1 :(得分:0)

您可以像这样将侦听器添加到切换中:

[SerializeField]
private Toggle myToggleVar;

private void Start() {
    // UI event listeners
    myToggleVar.onValueChanged.AddListener(delegate { onToggleExec(); });
}

private void onToggleExec() {
    Debug.Log("Toggled!") //here you need to manipulate your other toggle
}