加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos creator: js中实现protobuf的打包和解析

发布时间:2020-12-14 17:07:17 所属栏目:百科 来源:网络整理
导读:首先在Google搜索中找到些相关资料,这里吐槽下百度,用百度真心搜索不到有用的资料,大部分均是广告,不知道作为一个搜索引擎,情何以堪。综合谷歌搜索到的各项资料,将本菜鸟cocos2dx_js集成方式贴出: 1.需要protobuf.js(http://pan.baidu.com/s/1dFfpXsd)

首先在Google搜索中找到些相关资料,这里吐槽下百度,用百度真心搜索不到有用的资料,大部分均是广告,不知道作为一个搜索引擎,情何以堪。综合谷歌搜索到的各项资料,将本菜鸟cocos2dx_js集成方式贴出:

1.需要protobuf.js(http://pan.baidu.com/s/1dFfpXsd),bytebuffer.js(http://pan.baidu.com/s/1hs36tUG),long.js(http://pan.baidu.com/s/1slBv57n)文件,此处给出我使用的版本。

2.将此三个文件复制到脚本文件夹下

3.引用 protobuf.js,bytebuffer,js

var ByteBuffer = require("bytebuffer");
var ProtoBuf = require("protobuf");
4.将protobuf原文件(.proto)复制到项目assets/resources目录下,如果没有resources目录,新建一个即可

5.使用protobuf.js解析proto文件,因为我的原文件放在assets/resources/protobuf/guaji.proto,此处不需要加后缀,cocos2d会自动查找 ,ProtoBuf.protoFromString方法会解析文件生成一个protobuf对象工厂。

        var protoFile = "protobuf/guaji";
        cc.loader.loadRes(protoFile,function (err,bgTexture2D){
            cc.log("loadfinish");

            Builder = ProtoBuf.protoFromString(bgTexture2D);
        });
6.拿到工厂之后使用工厂对象生成原文件中数据对象,如果源文件中存在package包名,在创建protobuf对象的时候记得加上包名,此处我的包名为(game.service.data),拿到protobuf对象之后记得使用new创建实例,然后使用set方法即可设置数据
        var Message = Builder.build("game.service.data.MsgLoginData");
        var loginMessage = new Message();
        loginMessage.set("UserAccount","webTest");
        loginMessage.set("UserPassWord","123456");
7.使用BUFF数据解析生成protobuf数据实例messageBuff为ArrayBuffer对象实例,使用get方法,或直接使用取属性符号(.)即可获取数据
        var Message = Builder.build("game.service.data.MsgLoginResult");
        var msg = Message.decode(messageBuff);


到此js和protobuf集成基本完成

下篇解释跟websocket集成使用

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读