Joker-YF / JKFrame

Indie Game Framework
MIT License
249 stars 39 forks source link

请问EventSystem和EventTool有什么区别,分别什么情况用 #11

Closed laikaicool closed 1 year ago

UnParKs commented 1 year ago

事件工具用于给游戏对象快速绑定事件,而无需手动给游戏对象挂载脚本,功能逻辑在当前脚本实现。与事件系统区分:事件系统重点在于提供了一个事件监听添加和事件触发解耦的中间模块,使得事件的触发无需关注依赖的对象,但事件执行的功能逻辑还是要实现在对象挂载的脚本上的。而事件工具重点在于快速为游戏对象绑定常见的响应事件,这类事件不由当前脚本触发(实际上底层实现是为物体额外添加了另一个专门用于触发事件的脚本,当前脚本写好逻辑传一个Action给这个脚本),而是在特定的时机如碰撞、鼠标点击、对象销毁时自动触发,因此重点关注事件监听添加的简化,所有逻辑在当前脚本完成。

UnParKs commented 1 year ago

再举一个例子比如玩家收到伤害血量降低,那么除了玩家本身数据要变化,同时还要触发UI显示更新,这些逻辑一般分散在多个脚本里,这首就可以把UI的更新通过事件系统包装,在玩家数据变化的时候触发UI事件即可,这样开发起来会方便,UI部分的代码写好就不用改了。 事件工具的话比如我想给任意一个对象添加一个鼠标响应事件,那我只要能获取到这个对象的GameObject,那就可以直接在当前脚本通过事件工具给他添加一个OnMouseClick事件,而不需要在那个对象上单独挂一个脚本,在脚本里写OnMouseClick逻辑,主要是为了开发方便。

laikaicool commented 1 year ago

谢谢