Sooo,我有一个奇怪的问题。每当我尝试为Dropdown.value分配值时,一切都可以,直到这部分在游戏测试期间执行。我的意思是,没有错误信息,没有,整个统一编辑器只是崩溃。
也没有其他可能的错误,我注释掉整个脚本只留下这个并且它崩溃了。删除行有效但我需要它在实例化对象时将默认值设置为下拉列表。我也尝试在范围内分配数字(13个元素,分配5个也不起作用)。它看起来像这样,真的没什么复杂的:
GameObject tempObj = Instantiate(PanelToInstantiate, this.transform);
Dropdown tempDrop = tempObj.transform.FindChild("Dropdown").GetComponent<Dropdown>();
tempDrop.AddOptions(GlobalData.ListOfStrings);
tempDrop.value = 5; //Normally some other variable, but I testes with straight number too
pastebin上的完整脚本:http://pastebin.com/UgWxhuXF
正确添加选项,并在游戏测试期间在检查器中显示。对代码dropdown.value的任何更改都会在编辑器崩溃时结束,而不会显示任何错误消息。有人可以建议任何修复吗?我试图从头开始重新制作整个实例化的预制件,以防它被损坏。我还检查了另一台机器上的项目,但崩溃仍然发生。
Unity版本:5.5.1f1
语言:C#(使用Unity插件的Visual Studio社区)
答案 0 :(得分:0)
我在3天后想出来了,yay:D
所以,问题是,onValueChange被调用EVERY TIME值被更改。即使是通过脚本。在这里我添加了Awake中的监听器,所以它们在实例化后立即被添加到下拉列表中...然后我更改了值,这些函数调用了这些函数,导致创建具有相同效果的新下拉列表,s,ergo无限循环。
因此修复是在更改初始值后添加侦听器。
感谢CodingYoshi的帮助:D