我有一个简单的预制件,由预制按钮和面板制成。
该按钮位于面板内部,因此它是面板的子代。我确实保存了预制件,一切都很好。

然后,我确实在按钮上添加了一个click事件;所以我确实将游戏对象添加到要使用的脚本所在的位置,然后选择要使用的正确方法。我确实更新了预制件并将其从场景中删除。

现在,当我使用Resources.Load(“myUIprefab”);在现场实例化此预制件时;它可以正确显示面板,按钮和颜色/设置。

但是单击按钮本身没有任何联系;这导致按钮不执行任何操作。

是不是预制件,一种保存要在以后使用的对象的方法?在这种情况下,它应该保留点击设置。这是新Unity UI系统的错误还是不幸的实现?
如果没有填充click()或其他委托(delegate),则用按钮或其他GUI元素制成预制件几乎没有意义。

最佳答案

预制中存储的游戏对象只能保存对同一预制中的其他对象或其他预制的引用。对于对象引用,事件或其他任何情况都是如此。

如果您希望事件继续存在,则必须在同一预制中具有事件处理程序,并通过按钮调用该事件处理程序。这可以是一个简单的处理程序方法,在调用时会引发标准的.Net事件(.Net事件可能比Unity事件更易于使用)。

关于unity3d - UI预制:按钮不保留onclick()设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35681134/

10-17 03:13