我正在制作一个统一的 2d 游戏。我正在使用 UI 切换方法,并希望在打开另一个时关闭其中一个。我尝试过的方法是执行以下代码(InfiniteMode 和 CampaignMode 是两个切换的名称):
if (InfiniteMode.isOn)
{
PlayInfinite();
CampaignMode.onValueChanged.Invoke(false);
}
if (CampaignMode.isOn)
{
PlayCampaign();
InfiniteMode.onValueChanged.Invoke(false);
}
我能做些什么来实现这一目标的任何帮助都会很棒。
答案 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
}