【问题标题】:How to make one toggle turn off when the other turns on in unity如何在另一个统一打开时关闭一个切换
【发布时间】:2021-04-18 11:59:13
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您是否尝试将InfiniteMode.onValueChanged.Invoke(false) 替换为InfinteMode.isOn = false

标签: unity3d togglebutton unity-ui


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    [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
    }
    

    【讨论】:

      猜你喜欢
      • 2023-01-31
      • 2016-12-03
      • 2011-10-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      相关资源
      最近更新 更多