UI 预制件:按钮不保留 onclick() 设置

UI prefabs: buttons does not retain onclick() settings

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

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

现在,当我用 Resources.Load("myUIprefab") 在场景中实例化这个预制件时;它正确显示了面板、按钮和 colors/settings.

但是点击按钮本身没有任何关联;这导致按钮什么都不做。

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

存储在预制件中的游戏对象只能保存对同一预制件内其他对象或其他预制件的引用。对于对象引用、事件等等都是如此。

如果你想让事件持续存在,你必须在同一个预制件中有一个事件处理程序,并让你的按钮调用它。这可以是一个简单的处理程序方法,在调用时引发标准 .Net 事件(.Net 事件可能比 Unity 事件更易于使用)。

抱歉,我迟到了。我设法通过在具有正确设置的场景中停用预制件实例,然后将生成它们的行为指向此对象而不是预制件,来设法保持事件数据设置正确。

在某些情况下,您想要调用附加到不相关游戏对象(例如 GameManager)的脚本中定义的方法,您必须将此其他游戏对象设为预制件并为该预制件分配一个 onclick 方法。