UnityEvent.AddPersistentListener出现问题。我尝试从自定义编辑器订阅UnityEvent的函数。订阅事件的函数从继承自编辑器的自定义编辑器脚本调用,并且在正常类结构中调用。我尝试时遇到错误,这使我认为是语法错误,但我无法确定。
下面是我的代码
UnityEditor.Events.UnityEventTools.AddPersistentListener(targetEvent, delegate { UpdateAndRunPromptById(id); });
我收到此错误:
Could not register callback <UpdateSubscribedEvents>b__0 on . The class null does not derive from UnityEngine.Object
有人知道为什么会发生这种情况以及如何解决吗?
2条答案
按热度按时间u7up0aaq1#
persistent侦听器就是这样一个侦听器,正如其名称所示,它将被持久地序列化为公开
UnityEvent
的任何人。为了添加一个持久性回调,因为错误告诉你要调用的方法的“所有者”需要是一个
UnityEngine.Object
,就像你通过检查器以“正常”的方式添加持久性回调一样。该方法需要遵循相同的规则,以便正确地序列化到公开/序列化
UnityEvent
的任何人。UnityEngine.Object
public
是否有特定的原因需要使用持久回调?
ar7v8xwq2#
我找到了一个适合我的解决方案。在文档中我发现有
AddIntPersistentListener
、AddStringPersistentListener
、AddBoolPersistentListener
和AddFloatPersistentListener
用于简单的1参数函数,所以我没有定义委托(我意识到这是导致错误的原因),而是根据需要使用特定的侦听器。希望这能帮助到任何需要它的人。