我在Start方法中基于预制实例化了一个Toggle。但是,当我单击切换时,Unity冻结,并且在控制台中看到一个StackOverflow弹出窗口。我正在关注此Unity toggle example。
我的直觉是我的错误是因为在创建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;
}