creator3d-doc-集成pb

  1. 下载安装protobufjs
1
npm install -g protobufjs
  1. 导入js库
    在protobufjs\dist中找到protobuf.js文件,并作为插件拖放到Creator中

  2. 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
# 生成js
pbjs -t static-module --es6 -w commonjs -o msg.js msg.proto

# 生成.d.ts
pbts -o msg.d.ts msg.js
  1. 修改生成的js
1
2
3
4
5
// 注释下面代码
import * as $protobuf from "protobufjs/minimal";

// 插入新的代码
var $protobuf = protobuf;
  1. 序列化测试
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