[开发者心得] 扩展ModuleS可收发全服消息,实现全服弹幕小案例

[复制链接]
46 |2
jet 发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 jet 于 2024-11-9 12:55 编辑

一、ModuleS 扩展脚本 DSModuleS
两个主要接口,发送全服消息和接收到全服消息

    /**
     * 发送消息
     * @param type 自定义类型,方便接到消息判断
     * @param data 数据
     * @param ignoreVer 忽略版本
     * @param beHost 主机才收到
     */
    protected sendMsg(type: number, data: string, ignoreVer: boolean = true, beHost: boolean = false): void {
    }
    /**
     * 接到全DS消息
     * @param type 自定义消息类型
     * @param data 内容
     */
    public onMsg(type: number, data: string): void {
    }


DSModuleS 脚本文件中的 DSMgr 类为DS房间主从管理器及全服消息同步
使用 Event.dispatchSceneEvent 来同步



二、弹幕案例

服务器模块脚本 SocialModuleS  改为继承DSModuleS
export class SocialModuleS extends DSModuleS<SocialModuleC, null>


    //服务器受到信息后同步给全服
    public net_allBarrage(uid: string, name: string, msg: string, type: number = 0) {
        let info = {
            uid: uid,
            type: type,
            name: name,
            txt: msg
        }
        this.sendMsg(2, JSON.stringify(info));  //发送全服消息
    }
    //接收到消息后处理

    public onMsg(type: number, data: string): void {
        let info = JSON.parse(data);
        switch (type) {
            case 1://机器人弹幕
                this.getAllClient().net_robotBarrage(info.ndx, info.bid);
                break;
            case 2://玩家弹幕
                this.net_locBarrage(info.uid, info.name, info.txt, info.type)
                break;
        }
    }



客户端模块脚本 SocialModuleC
export class SocialModuleC extends ModuleC<SocialModuleS, null>


处理弹幕显示管理脚本 BarrageMgr



相关脚本文件
DSModule.ts (9.01 KB, 下载次数: 2)
回复

使用道具 举报

帅翁 发表于 前天 10:30 | 显示全部楼层
回复

使用道具 举报

六安🐟片 发表于 前天 13:07 | 显示全部楼层
真不错,做跨房间消息更方便了
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表