用lua-protobuf替换lua的protoc-gen-lua
lua-protobuf下载:https://github.com/starwing/lua-protobuf
将tolua中pbc(pb.c),替换成lua-protobuf(pb.c和pb.h),然后编译成相应平台支持的库文件(win tolua.dll, android libtolua.so, mac tolua.bundle, ios libtolua.a)替换原来的文件(我直接用了别人编译好的文件)
复制lua文件到工程的lua文件目录下
用pb.load加载协议的二进制文件
使用了protoc 3.9.0
生成协议的二进制文件
protoc -I [协议文件路径] -o [生成的文件路径]
生成c#文件
protoc -I [协议文件路径] --csharp_out [生成文件的目标目录]
注意:-I 后的 ./ 后面要加空格,不然会提示Missing input file,别的好像就不用加
为了使用生成的c#文件,还需要把Google.Protobuf.dll和一些相关的dll导入工程,用NuGet下载Google.Protobuf,都会下载到Packages里
使用的批处理程序,与protoc.exe放在一起
@echo off
::protoc -I 用的路径,.\后要加一个空格
set PROTO_PATH_I=.\ Protocol
set PROTO_PATH=.\Protocol
set BYTES_OUT=..\Assets\Res\ProtobufCompiledProtocols
set CS_OUT=..\Assets\Scripts\ProtobufGenerate
set TEMP_OUT=.\_temp
@echo off
md "_temp"
@echo off
echo ----- 生成二进制文件 -----
@echo off
dir %PROTO_PATH%\*.proto /b > %TEMP_OUT%\_temp_protolist.txt
@echo on
for /f "delims=." %%i in (%TEMP_OUT%\_temp_protolist.txt) do protoc -I %PROTO_PATH_I%\%%i.proto -o %TEMP_OUT%\%%i.bytes"
@echo off
echo ----- 生成c#文件 -----
@echo on
for /f "delims=." %%i in (%TEMP_OUT%\_temp_protolist.txt) do protoc -I %PROTO_PATH_I%\%%i.proto --csharp_out %TEMP_OUT%"
@echo off
echo ----- 复制到目标目录 -----
@echo on
copy %TEMP_OUT%\*.bytes %BYTES_OUT%
@echo on
copy %TEMP_OUT%\*.cs %CS_OUT%
@echo off
echo ----- 删除临时目录 -----
@echo on
rd /s /q %TEMP_OUT%
@echo off
pause