- 下载安装protobufjs
1
| npm install -g protobufjs
|
导入js库
在protobufjs\dist中找到protobuf.js文件,并作为插件拖放到Creator中
pb转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| syntax = "proto3";
package msg;
message Info { string name = 1; string pwd = 2; int64 uid = 3; }
message Login { string name = 1; string pwd = 2; int64 uid = 3; Info info1 = 4; repeated Info info2 = 5; }
|
1 2 3 4 5
| pbjs -t static-module --es6 -w commonjs -o msg.js msg.proto
pbts -o msg.d.ts msg.js
|
- 修改生成的js
1 2 3 4 5
| import * as $protobuf from "protobufjs/minimal";
var $protobuf = protobuf;
|
- 序列化测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| export class proto {
public AA() { let message = msg.Login.create(); message.name = "name" message.pwd = "pwd" message.uid = 10000890111
message.info1 = <msg.IInfo>{} message.info1.name = "info1" message.info1.pwd = "info1 pwd" message.info1.uid = 10000890211
message.info2 = [] message.info2.push(<msg.IInfo>{}) message.info2.push(<msg.IInfo>{})
message.info2[0].name = "info21" message.info2[0].pwd = "info2 pwd1" message.info2[0].uid = 10000890311
message.info2[1].name = "info22" message.info2[1].pwd = "info2 pwd2"
// 序列化,获取二进制数据,一定要注意使用finish函数 let messageBuf = msg.Login.encode(message).finish();
// 反序列化 let mes2 = msg.Login.decode(messageBuf)
GameLogger.Warn(message) GameLogger.Warn(messageBuf) GameLogger.Warn(mes2) } }
|
参考1
https://www.jianshu.com/p/f727f78dcc76