在 Unity 中使用委托和事件创建事件管理器(消息系统)
Posted
技术标签:
【中文标题】在 Unity 中使用委托和事件创建事件管理器(消息系统)【英文标题】:Create Event Manager (Messaging System) in Unity Using delegate and event 【发布时间】:2019-04-02 02:35:34 【问题描述】:unity官网上有个视频教程叫:
Events: Creating a simple messaging system.
他们创建了一个事件管理器或消息系统。
我看了它,它非常有帮助,所以我在我的游戏中创建了这个系统,现在决定不使用UnityEvent
和UnityAction
,而是使用delegate
和event
,这是更好的性能和良好的实践。所以这是我的代码 [StopListen()
功能尚未包含]:
在我的Listen()
函数中,这行thisEvent = new GameEvents();
给我带来了麻烦,我不知道如何解决它! (帮助!):-)
[PS]:
delegate
和 event
的性能是否比 UnityEvent
和 UnityAction
更好?
应该或必须在此代码中添加什么以使其更高效?
【问题讨论】:
【参考方案1】:您必须定义在访问委托时应该调用什么,否则如果什么都不做,则不需要委托。
像 lamda:
thisEvent = new GameEvents(() => Console.WriteLine("TODO"););
或者一个方法:
thisEvent = new GameEvents(Target);
private void Target()
throw new NotImplementedException();
可以看看https://www.codeproject.com/Articles/624575/Delegate-Tutorial-for-Beginners
对于执行时间,我认为最好是做一个测试,看看哪个性能更好。
【讨论】:
以上是关于在 Unity 中使用委托和事件创建事件管理器(消息系统)的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有事件/委托回调的情况下在 Unity 中创建 MessageBox?