【发布时间】:2014-05-06 13:43:31
【问题描述】:
我想知道是否有人可以向我解释我如何在 Unity 运行时更新列表?
例如,我有一本咒语书,里面有 3 个咒语,当我将它们拖到我的操作栏时,它们会被重新设置为父级,我想要做的是在下面获取每个孩子的列表操作栏变换,
我的问题是,如果我在更新中尝试类似下面的操作,它实际上会在哪里做这样的事情,它会添加很多次,我可以理解,因为更新每帧都会运行..
list = actionbarui.GetComponent(UIGrid).GetChildList();
for(var i =0;i < list.size; i++)
{
buttonList.Add(list[i].gameObject);
}
如果我给按钮添加一个回调,这样每当它们被拖放时,它就会运行上面的代码并添加附加的东西,例如,如果你只拖动一个“咒语”,它将循环一次,即很好,但是一旦您添加另一个,它就会循环 3 次,也就是说,它已经有一个,然后再次添加相同的一个,加上刚刚被拖动的新按钮,总共 3 次。
我已经尝试将代码更改为
list = actionbarui.GetComponent(UIGrid).GetChildList();
for each(var child : Transform in list.GetEnumerator())
{
buttonList.Add(child.gameObject);
}
但是这个简单并没有添加任何东西,我不确定如何在列表被拖拉时保持更新,谁能解释一下这是如何实现的?
请忽略第二个“列表”代码,它将“BetterLists”作为 NGUI 的一部分实现,因此不遵循标准列表方法。
感谢您的阅读
【问题讨论】:
-
请停止编辑问题,做一些愚蠢的小改动,这样你就可以得到一些愚蠢的徽章。
-
这不是愚蠢的改变,你误导了 Unity 作为 .NET 的注入容器,而 Unity3d 作为游戏引擎。如果你想有正确的答案和观众,你应该确保你使用了正确的标签。
标签: unity3d unityscript ngui