我是 unity 的绝对初学者。我一直在研究一个 UI,它是一个简单的登录表单。其中我有两个 Toggle
用于选择性别,即男性或女性。我一直在做的是调用一个方法来检查是否已经选择了男性,当按下另一个切换开关时,它将从男性中删除检查。
当我单击女性 Toogle
时,我的 Unity
卡住了。这是我的代码。
Toggle female;
Toggle male;
void Start(){
female = GameObject.Find ("toggle_female").GetComponent<Toggle> ();
male = GameObject.Find ("toggle_male").GetComponent<Toggle> ();
}
public void isMale(){
if (female.isOn)
female.isOn = false;
male.isOn = true;
}
public void isFemale(){
if (male.isOn)
male.isOn = false;
female.isOn = true;
}
最佳答案
您的 Toggle
正在进入无限循环.
当女性切换时,onValueChanged
事件被触发。我假设您的 isFemale()
函数与 Toggle onValueChanged
相关联事件,所以 isFemale()
将被调用。
当 isFemale()
被调用时,它将执行 male.isOn = false;
导致
要调用的 isMale()
函数将运行 female.isOn = false;
导致再次调用 isFemale()
。这是永恒的。
onValueChanged
当从脚本设置 isOn
时,永远不应触发事件。这就是问题所在。
解决方案:
您正在寻找 ToggleGroup .
1.Create male toggle GameObject -> UI -> < strong>Toggle 然后将其命名为 Male toggle。
2.Create female toggle GameObject -> UI -> < strong>Toggle 然后将其命名为 Female toggle。您可以稍后更改标签文本。
3.创建一个空的游戏对象。 GameObject -> 创建空。 将其重命名为 ToggleGroup。
选择新创建的GameObject,转到Component -> ToggleGroup。现在,您有一个名为 ToggleGroup 的游戏对象,并附加了 ToggleGroup
组件。
4.选择您的 Male toggle,然后将 ToggleGroup GameObject 拖到 Male toggle 的 Group
插槽。选择您的Female toggle,然后将ToggleGroup GameObject 拖入Female toggle 的 Group
插槽
选择您的Female toggle,然后unckeck Is On复选框以确保只有一个(Male toggle ) 默认选中。点击播放,现在一次只能选择一个开关。
关于c# - 执行一段代码后Unity 5无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40257868/