2017-02-19 31 views
0

Sooo,我有一个奇怪的问题。每当我尝试将值赋给Dropdown.value时,一切都很好,直到在玩测试期间执行此部分。我的意思是,没有错误信息,没有,整个统一编辑器只是崩溃。统一5 UI - 分配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 

上引擎收录完整的脚本:http://pastebin.com/UgWxhuXF

选项正确添加和游戏测试期间,在检查可见。通过代码对dropdown.value进行的任何更改都会在编辑器崩溃中结束,而不会显示任何错误消息任何人都可以提出任何修复?我甚至试图从头开始重新构造整个实例化的预制件,以防它损坏。我还在另一台机器上检查了该项目,并且崩溃仍然发生。

统一版本:5.5.1f1

Languague:C#(Visual Studio中的社区和Unity插件)

+0

包装你的代码在'尝试catch',看看有什么异常是 – CodingYoshi

+0

已经尝试过了。除非Visual Studio社区与Unity结合使用某种特殊方式。即使尝试...赶上团结仍然崩溃,我没有信息。我会考虑以这种方式调试统一,也许我做错了什么。 – Ethelnalen

+0

我尝试使用try catch更多,捕获不同的异常(包括System.Exception和UnityException),以不同的方式将VS连接到统一。没有任何信息提供有关造成事故的原因。 另外我编辑主要职位添加pastebin链接与完整的脚本,但不知道如果这将有所帮助。我现在唯一的想法是从零开始重建项目本身:/ – Ethelnalen

回答

0

我想通了之后3天,耶:d

所以,问题是, onValueChange被调用EVERY TIME值被改变。即使它是通过脚本。在这里,我在Awake中添加了监听器,因此它们在实例化后立即添加到下拉列表中,然后我更改了值,这会调用这些函数,从而导致创建具有相同效果的新下拉列表,这就是无限循环。

因此,修正是在更改初始值后添加侦听器。

感谢CodingYoshi因为虽然帮助:d