creator 与protobuf的那些事

其实论坛里也有不少大佬已经说了protobuf在creator里面的用法,但是实际上遇到的事远没有大佬们说的那么简单。

我creator用了protobuf感觉傻瓜式。。。,跟后台配合好,还挺简单的

1赞

数组格式怎么定义的

大佬们写的教程基本都是 基于protobuf5 也是他们说的直接在项目下面 npm install protobufjs 但是npm下来的却是protobuf最新的版本,所以你们想学习大佬的教程一定要npm install protobufjs@5 这样才行,不然你就只能看着大佬的教程干瞪眼了。

3赞

不过不得不说,protobuf用起来还真方便 !!!!!!

1赞

var Protobufjs = require(‘protobuf’);

    var protoDefine = `
    package ccc; 
    message UserInfo 
    {        
       required int32     id = 1;       //必写   
       optional string    name = 2;     //选写
       optional int32     age = 3;
    }`;

    var builder = Protobufjs.parse(protoDefine);

    var msg_class = builder.root.lookup("UserInfo");
    var message = msg_class.create({id:1,name:"test"});
    var body = msg_class.encode(message).finish();
    console.log(body);

    body = msg_class.decode(body);
    console.log(body) ;

我也是后来才找到这样用的,不过我还是用的是protobuf5

proto数组怎么定义的

var json ={
id: 11,
name: “22”,
num: [1,2,3,4],
list: [
{id:1,name:“a”},
{id:2,name:“b”},
]
}
类似这样的数据怎么用proto定义

message PGame_S2C{
required int32 errorCode = 1;//错误码,参考对应code
optional PalyerInfo preInfo=2;//玩家和物品信息
}
PalyerInfo 是另外一个结构体

你可以先定义一个结构体,然后再赋值

@hc624009434 @matt @ly13714214979 @yangshuhong @MShawn
新手开搞cocos小游戏,项目中要集成protobuf,目前问题各种报错,有几个问题大佬们能否回答下:
开发环境cocos creator 1.9;

  1. 到底用google官方的js库还是用decodeIO的protobufjs
  2. 目前用decodeIO 6.8.6版本,只把protobuf.js这一个文件集成到工程中,然后使用loadSync或者load方法都是找不到.proto文件,看提示说是该方法只支持node环境,怎么解决?
  3. 不管用哪种能否给个可运行demo,跪求,感激涕零
    邮箱: george_luofz@163.com

版本6.8的跟着协议解析就行,官例看下就可以了

嗨 我用load方法会报下边这个错误:
Failed to load resource: the server responded with a status of 404 (Not Found)
它从网络中去拿proto文件了,这是怎么回事

看你远程的名字对不对

感谢回答 这个问题现在解决一半了
proto 文件存放在assets/resources/目录下
代码如下:

var protobuf = require('protobufjs');
var resourceUrl = cc.url.raw("resources/login.proto"); 
protobuf.load(resourceUrl,function(error,root){ // 此处无论传cc.url.raw包装过得路径还是只传'resources/login.proto'结果都一样
     if(error){
           console.log('load error: '+error);
           throw(error);
      }
  //...
}
  1. 在浏览器上跑是正常的 能解析到该目录下的proto文件
  2. 在cocos模拟器上提示:creator模拟器Simulator: Response failed, error buffer: 不支持的 URL这样的错误,似乎又从网络上找proto文件了
    能否帮忙指导下,谢谢

这个就不一样了好像,那个是web用可以,放到模拟器上好想就不一样了,模拟器我也不知道要怎么弄,不好意思

感谢回答~
因为我们最终要把游戏作为一个模块集成到原生App中,不知道最终在原生端是否有问题?
期待大神回复

同样遇到这个问题,web应用ok,原生不行
模拟器中,资源路径“E:/xxxx/xxx/xx/xx/xxxx.proto”,控制台输出
Response failed, error buffer: Protocol “E” not supported or disabled in libcurl
这个load方法似乎只能加载http资源,本地的加载不了;用loadSync这个方法又只支持node环境,纠结