孙广东 2015.9.25
批处理的好处就不说了。
ProtoBuff这里也不多说什么, 看最后面的介绍吧!
先看看批处理脚本
@echo off
:: 注: 这是放在Unity的Assets 下的文件
:: cd..是进入上一层目录 cd\是进入根目录
set unityDllPath=%cd%\Assets\Plugins\
cd PXProtocolProject
echo 进入路径: %cd%
set protoSourcePath=%cd%\ProtoFile\
set protoImportsPath=%cd%
:: 进入这个目录
cd CSharpTool
echo 进入路径: %cd%
set protoBinPath=%cd%\ProtobinFile\
set csharpSourceOutputPath=%cd%\CSharpCode\
set csharpProjectPath=%cd%\ProtoDllGen\ProtoProject\ProtoFileToCSharpFile\
:: for %%i in (*.*) do echo %%i
echo generateing csharp codes...
:: 生成C#代码, for循环对每个文件进行操作
for %%i in (%protoSourcePath%*.*) do (
%cd%\protoc.exe --descriptor_set_out=%protoBinPath%%%~ni.protobin --include_imports %%i --proto_path=%protoImportsPath%
%cd%\protogen.exe %protoBinPath%%%~ni.protobin -output_directory=%csharpSourceOutputPath%
)
:: 将生成的C#文件 拷贝到 Dll工程内
echo copying csharp code file to project..
copy %csharpSourceOutputPath%*.cs %csharpProjectPath%
echo compile the c# dLL project..
set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v2.0.50727
call %msBuildDir%\msbuild.exe %cd%\ProtoDllGen\ProtoProject\ProtoDllGen.csproj /t:Rebuild /p:Configuration=Release /p:VisualStudioVersion=14.0
:: 将编译的生成文件拷贝到 Unity项目中, 让Unity执行编译
echo copying the dLL to unity project..
copy %cd%\ProtoDllGen\ProtoProject\bin\Release\*.dll %unityDllPath%
pause
:: 孙广东 添加 :要求,这个直接放到unity项目中根目录下。 而这个ptoto项目要相对于Unity项目是平行的。即如下:XXXXX\px\.git 和 XXXXX\px\PXProDoc\.git // unity项目要 忽略PXProDoc 这个文件夹
:: 然后拷贝 就方便了
看看运行结果:
在 Unity 中双击如下文件:
结果在 Untiy的 文件夹 下:
。。。。
废话不多说。 继续阅读
首先, Proto协议文件是 服务器和客户端所共享的。 服务器根据它生成对应的语言。 客户端根据它生成对应的语言(Unity中就是C#了)
所以可以想象的是:团队的项目中包括了:服务器project、客户端project、ptotoBuff协议project(这些协议由服务器定义就行了, 然后)
ProtoBuf对于很多人而言并不陌生,应该也在很多项目中得以应用了。 那么现在我们就来看看,在Unity中使用的具体步骤。
步骤1 :
Google 官方的Protobuf是不支持C#语言的,好在有很多开发者为ProtoBuf开发了支持C# (.net)的插件, 打开网址 http://code.google.com/p/protobuf-net/, 这是。net版本的主页。
步骤2:
下载 protobuf-net_r668.zip, 将其解压, 然后将路径Full\unity内的所有文件复制到Unity工程目录内,这里建议复制到 Plugins目录内。
步骤3:
使用任意文件编辑器创建第一个协议文件,本地将文件命名为 chatapp.proto