creator 引入 protobuf

本文记录了一位新手在使用Creator框架中引入protobuf时遇到的困难,包括下载node.js,跟随某大神的文章操作,但在`protobuf.protoFromFile()`步骤遇到文件读取错误。通过cc.loader.loadRes()加载protobuf文件并使用protobufjs实现了一个笨拙但可行的解决方案。作者在结尾提到,发现pbkiller工具后感到后悔,呼吁更多大神分享使用经验和教程,帮助新手避坑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前边:直接引入对新手来说太不友好了,弄了大半天头都大了。

(最后无意间看到pbkiller,突然觉得这一晚上都白瞎了。一位大神给的pbkiller使用教程,链接Creator插件-pbkiller安装使用_腾讯视频);

还是记录一下今天使用protobuff过程吧:

1、下载node.js

      官网链接地址:https://nodejs.org/en/download/

       默认安装

2、然后的操作就根据那位大神发得文章一直操作下去
      文章链接地址:https://www.jianshu.com/p/c4b8a8e3077f
      直到文章中的这一步,


我这边使用protobuf.protoFromFile('xxx.proto',builder);这一步怎么都读不到文件,老是报错说找不到 xxx.proto(多半是路径问题,但到最后还是没弄明白究竟该怎么改....)。咋办啊?这时无意间发现 “cc.loader.loadRes('Player', function(err,res){});”可以读到文件,然后就想了个笨办法,具体见3。

3、思路:先用cc.loader加载Player.proto文件,然后再使用protobufferjs:

//gameCtrl.js
cc.Class({
    extends: cc.Component,

    properties: {
        prodefine:null,
    },
    
    onLoad:function(){
        this.loadConfig();
    },
    //用cc.loader读resources下的Player.proto文件
    loadConfig:function(){
        let self =this;
        cc.loader.loadRes('Player', function(err,res){
            self.prodefine =res;
            self.loadPro();
        });
    },
    
    loadPro:function(){ 
        let protobuf = require("protobufjs");

        //使用loadProto 代替protoFromFile
        let builder = protobuf.loadProto(this.prodefine);
        var ccc = builder.build("ccc");
        var msgObj = new ccc["Player"]();
        msgObj.id = 10;
        console.log(msgObj);
        cc.log("输出msgObj:id",msgObj.id," enterTime:",msgObj.enterTime," name:",msgObj.name);
    },
});

 项目结构(gameCtrl随便挂个节点,只要能调用到onLoad函数就行)

其中Player.proto的定义如下:

package ccc; 
message Player {
   required  uint32  id = 1;         
   optional string  name = 2;       
   optional uint64  enterTime = 3;  
}

4、结果

web调试结果:

jsb调试结果 :

方法笨了点,但无论如何,总算可以用了。

5、写在最后:看到pbkiller的那一刻,我肠子都悔青了。。。
      对于我们这些新手来说,教程资源这些事真的难找,希望各路大神能多多发使用经验及教程,让我们这些小白少走点弯路,谢谢了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值