我有一个简单的预制件,由预制按钮和面板制成。 按钮放置在面板内部,因此它是面板的子项。我确实保存了预制件,一切都很好。
然后,我确实在按钮上添加了一个点击事件;所以我确实添加了我要放置的脚本所在的游戏对象,并选择要使用的正确方法。我确实更新了预制件并将其从场景中删除了。
现在,当我使用Resources.Load(" myUIprefab")在场景中实例化这个预制件时;它正确显示面板,按钮和颜色/设置。
但点击按钮本身没有任何关联;这导致按钮无效。
心不是'预制件,一种保存以后使用的物体的方法?在这种情况下,它应保留点击设置。这是新的Unity UI系统的错误还是不幸的实现? 如果没有填充click()或其他委托,那么从按钮或其他GUI元素制作预制件没有多大意义。
答案 0 :(得分:4)
存储在预制件中的游戏对象只能保存对同一预制件内的其他对象或其他预制件的引用。这对于对象引用,事件等都是如此。
如果您希望事件持续存在,则必须在同一个预制件中有一个事件处理程序,并让您的按钮调用该事件处理程序。这可以是一个简单的处理程序方法,在调用时会引发标准的.Net事件(.Net事件可能比Unity事件更容易使用)。
答案 1 :(得分:1)
答案 2 :(得分:0)
在一种情况下,您要调用在不相关的游戏对象(例如GameManager)附带的脚本中定义的方法,则必须将该另一个游戏对象设置为预制对象,并为此预制对象分配onclick方法。