构建复杂游戏/应用的神器:broadcast #8
AILHC
started this conversation in
Game Development Blogs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
前言
事件机制,相信很多人都知道,了解,也经常用到。
在设计模式中,它叫 观察者模式(又叫发布-订阅模式)。
它无处不在:
在Java中,它是Java的核心库java.utils.Observable,
在**C#**中,为它提供了语法糖支持:event关键字
在web浏览器的Javascript中,有内置的事件机制:window.addEventListener,Event
在Nodejs中,也有内置库events
在游戏引擎中也都是内置的存在
使用这种模式可以让我们更好地解耦游戏业务逻辑。
但是
这些事件机制的在Js和ts中的实现没能让我觉得满意(我都是使用过),总觉得缺了点什么。
突然有一天逛掘金,看到这么一个文章分享:
构建复杂应用的神器,FBroadcast
看完后,脑子里只有一个字: 这就是我想要的神器
我喜欢逛掘金,虽然他们大多是分享web前端相关的知识,但也有很多可以借鉴用到游戏前端的地方。受益匪浅。
介绍
一个基于TypeScript的一套高效灵活的广播系统,可以帮助开发者轻松、有序的构建具有极具复杂性的关联交互和状态变化的游戏和应用。
特性
安装/获取
源码获取
npm 安装
注意⚠️
如果所在项目不支持直接使用npm包
则需要到dist文件夹下,取出可以使用的模块规范类型的文件
比如CocosCreator3D,支持systemjs规范
使用
broadcast允许在注册/发送消息时,携带任意类型数据,并支持类型提示
broadcast允许在注册消息时,给自己透传数据(而非通过闭包取闭包外数据的方式)
闭包使用不当容易出问题。
开发者可以选择将特定类型的消息进行持久化,这样就能轻易实现广播式的全局状态管理。
粘性广播
当广播系统中没有对应类型的接收器时,粘性广播 将会暂时滞留在系统中,直到有该类型的接收器被注册,则会立即发出广播(当广播系统中有对应类型的接收器时,就和普通广播具有相同的表现)。
双向通信
broadcast支持在广播发送点接收接收器返回的消息。
支持函数this绑定或任意类型作为 环境绑定
在CocosCreator中注册事件可以这样
这个this可以用来调用showAnimView这个方法,不至于调用的方法里使用this时丢失this
而在broadcast中也支持,还支持在环境解构时,开发者可以方便的一次性移除所有在该环境中注册的接收器。
支持批量注册接收者
基本的使用就这些了
具体的使用例子可以克隆仓库:EasyGameFramework
看基于CocosCreator2.4.2的demo examples/egf-ccc-full/assets/tests/broadcastTest
打开这个场景:broadcastTest.fire
看demo之前,需要安装环境哦,
安装 npm ,然后到egf-ccc-full 根目录
极度舒适的类型提示演示
演示
demo测试展示
最后
欢迎关注我的公众号,更多内容持续更新
公众号搜索:玩转游戏开发
或扫码:
QQ 群: 1103157878
博客主页: https://ailhc.github.io/
掘金: https://juejin.cn/user/3069492195769469
github: https://github.com/AILHC
Beta Was this translation helpful? Give feedback.
All reactions