共计 2119 个字符,预计需要花费 6 分钟才能阅读完成。
引言
本系列是《8 年主程手把手打造 Cocos 独立游戏开发框架》,欢送大家关注分享珍藏订阅。在独立游戏开发中,事件管理器是一个不可或缺的组件。它为开发者提供了一种灵便的形式来解决游戏外部各种状态变动和用户交互,实现模块之间的解耦和通信。
什么是事件管理器
游戏开发中的事件管理器是一种用于解决游戏外部模块之间通信和交互的工具或零碎。它容许游戏中的不同元素、对象或零碎可能互相告诉和响应事件,从而实现游戏逻辑的交互和动态变化。事件管理器在游戏开发中扮演着要害的角色,有助于升高代码耦合度,进步代码的可维护性和可扩展性,同时也使得游戏的开发过程更加灵便和高效。
在游戏开发中,许多不同的对象和模块须要进行通信,例如玩家输出、游戏外部状态变动、碰撞检测等。事件管理器提供了一个中心化的机制,使得这些对象和模块可能通过发送和监听事件来进行通信,而不用间接依赖彼此的具体实现细节。这有助于缩小代码之间的依赖性,使得游戏开发者能够更加专一于单个模块的设计和开发,从而进步代码的可维护性。
事件管理器通常基于观察者模式(Observer Pattern)实现。核心思想是,一个事件管理器保护了一系列观察者(监听器),当某个事件产生时,它会告诉所有注册了该事件的观察者,从而触发相应的回调函数或操作。这样,游戏中的不同模块能够通过监听事件来实现通信和合作,而无需间接援用或调用彼此的办法。
例如,在一个角色扮演游戏中,玩家可能管制一个角色进行挪动。当玩家按下挪动键时,游戏能够应用事件管理器发送一个“挪动事件”,而后角色管制模块能够监听这个事件并响应,使得角色依照玩家的输出进行挪动。
事件管理器的重要性
- 模块解耦与复用: 在独立游戏开发中,游戏逻辑往往由多个模块组成,如玩家管制、敌人行为、关卡切换等。事件管理器可能使这些模块之间解耦,从而缩小依赖关系,使得每个模块可能独立存在、批改和复用,进步代码的可维护性。
- 灵便的通信机制: 事件管理器为开发者提供了一种灵便的通信机制,不同模块能够通过订阅事件来监听特定类型的音讯。这意味着开发者能够在游戏运行时动静增加或移除事件监听器,实现实时的交互和反馈。
- 逻辑集中管理: 游戏中的各种逻辑事件,如玩家取得道具、工作实现、游戏胜利等,都能够通过事件管理器进行集中管理。这样一来,开发者能够更清晰地掌控整个游戏的流程和状态变动。
- 疾速迭代与测试: 事件管理器的应用使得开发者可能更加疾速地进行迭代和测试。通过模仿不同事件的触发,开发者能够更不便地验证游戏逻辑是否正确,放慢开发周期。
- 多平台适应: 在独立游戏开发中,很多游戏可能须要适配不同平台,如 PC、挪动设施、主机等。事件管理器能够帮忙开发者在不同平台上更好地治理游戏逻辑,缩小平台适配的工作量。
事件管理器的设计准则
- 公布 - 订阅模型: 事件管理器应该基于公布 - 订阅模型,其中对象能够订阅特定类型的事件,并在事件产生时接管告诉。
- 事件类型: 开发者应该可能定义各种自定义的事件类型,以适应不同的游戏逻辑需要。
- 灵活性: 事件管理器应该具备灵活性,容许多个订阅者监听同一事件,以及订阅者能够选择性地勾销订阅。
- 数据传递: 事件管理器应该可能传递事件相干的数据,以便订阅者能够依据事件情境进行响应。
事件管理器的实现
1. 新建脚本 EventMgr 继承 cc.EventTarget
在 Cocos Creator 中,cc.EventTarget
是一个用于事件处理的类。它提供了一种机制,容许您在不同的对象之间发送和接管事件,以便实现解耦和更好的交互性。因而咱们只须要继承它而后封装一下就能简略实现事件管理器。
2. 创立事件管理器单例
因为事件管理器要害的内容引擎曾经帮咱们实现了, 那么咱们只须要简略地继承一下,而后以单例的模式,使得更不便地调用。
3. 封装接口
订阅事件。
订阅事件(仅订阅 1 次),通过该接口订阅的事件,在接管一次之后主动勾销订阅。
删除订阅,通过该接口能够删除任意一个已订阅的事件。
删除指标的所有订阅。通过该接口能够删除指标所有已订阅的事件。
派发事件。所有订阅了指定事件的指标将会接管到事件,并能够作出响应。
4. 成果演示
测试 on 和 once 接口:
测试通过,once 接口在第一次接管到事件后隐没,不会接管到第二次事件:
测试 off 接口:
测试通过,勾销订阅之后不会再接管到该事件:
测试 targetOff 接口:
测试通过,勾销指标订阅的所有事件后不会再收到事件:
总结
代码整洁之道在于解耦,事件管理器有助于各模块代码之间最大水平地解耦,进步代码的可维护性。
本文的重点内容次要有以下几点,不晓得小伙伴们是否曾经了解:
- 本系列是《8 年主程手把手打造 Cocos 独立游戏开发框架》,欢送大家关注分享珍藏订阅。
- 事件管理器的介绍。
- 事件管理器的重要性。
- 事件管理器的设计准则。
- 源码通过关注“亿元程序员”发送 ”EventMgr” 获取。
AD: 笔者曾经上线的小游戏《填色之旅》《贪吃蛇掌机经典》《重力迷宫球》大家能够自行点击搜寻体验。
感兴趣的小伙伴记得关注 ” 亿元程序员 ” 哦,一位有着 8 年游戏行业教训的主程。学习游戏开发不迷路。感谢您的关注,心愿能给到您帮忙, 也心愿通过您能帮忙到大家。
喜爱的能够点个 赞、点个 在看 哦!请把文章分享给你感觉有须要的其余小伙伴。谢谢。