33 lines
1.3 KiB
Plaintext
33 lines
1.3 KiB
Plaintext
1. 先加载proto结构定义,前面提到可以加载pb或者proto.Schema结构,分别如下:
|
||
protoc -I=. --plugin=protoc-gen-grpc-csharp=<plugin路径> --csharp_out=./ --grpc-csharp_out=./ <proto文件>
|
||
|
||
第一种大家都熟悉,编一下pb文件,使用loadfile加载
|
||
|
||
1 -- 加载pb文件,需要把proto编成pb使用
|
||
2 local pb = require "pb"
|
||
3 assert(pb.loadfile "login.pb")
|
||
第二种是我使用的,因为是Schema结构,做成文本文件方便结合资源系统更新
|
||
|
||
1 local pb = require "pb"
|
||
2 local protoc = require "protoc" --protoc在lua-protobuf的目录里
|
||
3
|
||
4 local protoString = ResLoader.Instance:LoadLuaProtoFile('login.proto.txt') --用自己的资源系统加载文本格式文件
|
||
5 protoc:load(protoString) --加载文本文件的内容
|
||
2. 使用pb解码,编码协议。这一步就是标准的流程了,lua-protobuf可以直接对定义好的结构decode/encode:
|
||
|
||
复制代码
|
||
1 -- 定义表数据
|
||
2 local loginCS = {
|
||
3 username="jack",
|
||
4 password="123456",
|
||
5 }
|
||
6
|
||
7 -- 序列化
|
||
8 local bytes = assert(pb.encode("login.req_login", loginCS))
|
||
9 print(pb.tohex(bytes))
|
||
10
|
||
11 -- 反序列化
|
||
12 local recvData = assert(pb.decode("login.req_login", bytes))
|
||
13 print(recvData .username)
|
||
复制代码
|
||
到这就跟以前其他平台使用protobuf没有什么区别了,这篇入门到此结束。 |