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



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

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

为实现这一目标,我所能做的任何帮助都将是巨大的。

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

如果查看Toggle组件,则会发现一个Group变量。如果您在Canvas中创建一个空的GameObject,并将Toggle Group组件添加到其中,并将该Toggle Group对象分配给您想要成为该组一部分的所有Toggle它应该起作用。

您可以将监听器添加到切换中,如下所示:

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

最新更新