c# - 执行一段代码后Unity 5无响应

标签 c# unity3d

我是 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 ) 默认选中。点击播放,现在一次只能选择一个开关。

enter image description here

关于c# - 执行一段代码后Unity 5无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40257868/

相关文章:

c# - 如何获取 WPF 用户控件可见部分的大小?

c# - Unity C# - 当同时拥有 OnTriggerExit 和 OnTriggerEnter 时,仅调用 OnTriggerExit

c# - XML 序列化类结果为空 XML

c# - 锁定 child 的旋转,使其始终面朝下

c# - 如何访问 GridView ButtonField 控件 ID?

c# - ASP.NET 样板中的 DeleteRange 函数

c# - 从达到的最后一关继续游戏

c# - 实现 CVAR 系统

java - 在 Unity Project 之间共享数据到 Android Studio java 代码

c# - Unity 检查数组中的二维对象是否在没有 OnCollisionEnter 的情况下发生碰撞