首页 > 解决方案 > Unity 切换状态更改导致 StackOverflow

问题描述

我正在我的 Start 方法中基于预制件实例化一个 Toggle。但是,当我单击切换 Unity 冻结时,我看到控制台中弹出 StackOverflow。我正在关注这个Unity 切换示例

我有预感我的错误是因为在创建 Toggle 后我传递tog给另一个创建实例的方法(因为我的程序中需要很多切换),但我不明白它为什么会崩溃。有人可以解释一下吗?

public void Start(){
//toggle creation
    GameObject tog1 = Instantiate(prefabTog, btnVector + Vector3.left * 90, Quaternion.identity);
    tog1.transform.SetParent(imgBtnParent.transform, false);
    Toggle tog = tog1.GetComponent<Toggle>();
    tog.onValueChanged.AddListener(delegate {ToggleValueChanged(tog);});

//generate toggle instance on screen and pass me back a Scriptable Object
var so=GenerateItem.CreateInstance(tog);
}

public class GenerateItem: ScriptableObject {
        public Toggle AutoTog=null;
            public static GenerateItem(Toggle tog){
            GenerateItem o = CreateInstance<GenerateItem>();
            o.AutoTog=tog;
         }
}

切换更改

public void ToggleValueChanged(Toggle t)
{
    t.isOn = !t.isOn;
}

标签: unity3d

解决方案


推荐阅读