cocoscreator使用protobuf(附带转换工具)

需要的工具

安装node.js nodejs地址

下载protobufjs protobufjs地址

操作

1.安装protobufjs到全局

npm install -g protobufjs

将模块安装到全局方便全局使用protobufjs提供的pbjs命令行工具。

pbjs可以将proto原文件转换成json、js

pbts,用来将转化后的js文件转为ts

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4zDdprOE-1602825667393)(https://imgkr2.cn-bj.ufileos.com/92797e0f-1607-420a-a321-58044ce53b99.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=pznnJYGzvssnAbKz70fYgLWfExo%253D&Expires=1602905095)]

2.把下载好的protobuf中这个文件夹下的protobuf.js文件 把这个文件拖到Creator工程中并且导入为插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-39CtGC8X-1602825602602)(https://imgkr2.cn-bj.ufileos.com/899bbd7b-fcde-4280-854d-54a221cc4f80.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=xjuyV%252F5R9Ne0cJ%252FznHRVlnMXD%252Bw%253D&Expires=1602905430)]

3.创建.proto消息文件

package ntesgame;

message Register {
    required string userId = 1;
    repeated string deviceId = 2;
    option string userToken = 3;
}

ntesgame 是包名,转换成js 或ts 后就是 命名空间

Register 是 消息结构

required 是 必须有的变量

4.在保存proto文件的目录下打开命令行执行如下命令

将文件中所有的.proto文件转化为一个proto.js文件)

pbjs -t static-module -w commonjs -o proto.js *.proto

将proto.js文件 转为 proto.d.t文件
pbts -o proto.d.ts proto.js

5.protobuf设置为插件后 修改proto.js中protobuf的引用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qyrr0ggU-1602825602603)(https://imgkr2.cn-bj.ufileos.com/2bcf0463-3e69-4a4e-9edb-388b4ac43613.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=c%252BMFZNK7eAXwtcG4TINgGC11WMg%253D&Expires=1602907008)]

6.然后把proto.js 或 proto.d.ts文件放入项目代码目录中 即可

7.测试

@ccclass
export default class NewClass extends cc.Component {


    // LIFE-CYCLE CALLBACKS:

    // onLoad () {}

    start () {
        let msg = ntesgame.ClientRegister.create({userId:"123",deviceId:"22",userToken:"ff"})
        let encode = ntesgame.ClientRegister.encode(msg).finish();
        console.log("编码:",JSON.stringify(encode))
        this.scheduleOnce(()=>{
            let decode = ntesgame.ClientRegister.decode(encode)
            console.log("解码:",JSON.stringify(decode))

        },3)
    }

    // update (dt) {}
}

测试结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oKRQpv4A-1602825602604)(https://imgkr2.cn-bj.ufileos.com/3d4021e0-0352-4ae1-8408-8868219af2fa.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=GSDw1rl83%252FFYKcbrclZbgVOIjNo%253D&Expires=1602908186)]

福利: protobuf自动转换工具

长按 下面二维码 或者 搜索 公众号。亮亮同学TT 关注 并发送 protobuf 获取 自动转换工具
在这里插入图片描述

往期精彩内容:

TS项目中使用全局变量/对象

虚拟摇杆功能实现

无限滚动背景

子弹追踪实现

技能cd效果实现

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值