CocosCreator protobufjs搭建

如果从来没有使用过protobufjs的同学,建议去官网的github上看一下的里面的Examples(打开网站后,ctrl+f这样搜会比较快)。

这之后,需要把xxx.proto文件放到resources文件夹下,因为这个要动态加载。

至于网上的一些文章,说的是proto2.0的版本,但是现在基本上都是用3.0,接口不一样。

如果项目只需要建立在网站上,而不需要打包成app,那可以用

function callback(err, root) {

};
var url = cc.url.raw("resources/proto/addressbook.proto");
protobuf.load(url, callback);

来解决。

我的文件是放在resources下的proto文件夹里。


如果需要打包成原生app,则:

var url = cc.url.raw("resources/proto/addressbook.proto");
cc.loader.load(url,function(err,tex){
    var protobuf = require('protobufjs');
    var pr = protobuf.parse(tex);
    var Person = pr.root.lookup("com.protobuf.Person");
    var PhoneNumber = pr.root.lookup("com.blst.protobuf.Person.PhoneNumber");
    var phoneNum = PhoneNumber.create({number:"13811113369"});
    var message = Person.create({
        name: "names",
        id: 100001,
        phones:[phoneNum]
    });
    var buffer = Person.encode(message).finish();

    var message1 = Person.decode(buffer);
    cc.log(" number = " + message1.phones[0].number);
});
下面是proto 内容
syntax = "proto3";
package com.protobuf;

message Person {
    string name = 1;
    int32 id = 2; 
    string email = 3;

    enum PhoneType {
        MOBILE = 0;
        HOME = 1;
       WORK = 2;
    }

    message PhoneNumber {
        string number = 1;
        PhoneType type = 2;
    }

    repeated PhoneNumber phones = 4;
}

总的来说,还是第二种方法全面。

文章参考:http://forum.cocos.com/t/cocos-creator-protobuf/48467

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值