最近在擺弄Unity的Socket,需要用到Protobuf,一般都會有多個協議文件,所以研究了下bat的批處理,下面給出批處理文件代碼:
1 @echo off 2 3 ::協議文件路徑, 最后不要跟“\”符號 4 set SOURCE_FOLDER=. 5 6 ::C#編譯器路徑 7 set CS_COMPILER_PATH=..\Tools\protobuf-net\ProtoGen\protogen.exe 8 ::C#文件生成路徑, 最后不要跟“\”符號 9 set CS_TARGET_PATH=..\Client\Assets\Scripts\Net\Protocol 10 11 ::Java編譯器路徑 12 set JAVA_COMPILER_PATH=..\Tools\protoc\protoc.exe 13 ::Java文件生成路徑, 最后不要跟“\”符號 14 set JAVA_TARGET_PATH=..\Server\GameServer\src
15 16 ::刪除之前創建的文件 17 del %CS_TARGET_PATH%\*.* /f /s /q 18 del %JAVA_TARGET_PATH%\*.* /f /s /q 19 20 ::遍歷所有文件 21 for /f "delims=" %%i in ('dir /b "%SOURCE_FOLDER%\*.proto"') do ( 22 23 ::生成 C# 代碼 24 echo %CS_COMPILER_PATH% -i:%%i -o:%CS_TARGET_PATH%\%%~ni.cs 25 %CS_COMPILER_PATH% -i:%%i -o:%CS_TARGET_PATH%\%%~ni.cs 26 27 ::生成 Java 代碼 28 echo %JAVA_COMPILER_PATH% --java_out=%JAVA_TARGET_PATH% %%i 29 %JAVA_COMPILER_PATH% --java_out=%JAVA_TARGET_PATH% %%i 30 31 ) 32 33 echo 協議生成完畢。 34 35 pause
可以將上面的bat文件直接放在協議文件的文件夾中,也可以修改成指定的路徑。
還有就是生成的路徑的文件夾必須存在哦。
每次創建時都會刪除目標文件夾下面的所有文件,注意不要在目標文件夾下存放其它的文件。
我后端使用的是Java,如果是其它語言可查看官方文檔進行生成。
順便記錄一下Protobuf的使用方法,首先,我們需要下面3個文件(版本2.6.1):
1.Google Protobuf編譯器:http://pan.baidu.com/s/1qWki4cG
2.C#版的Protobuf編譯器:http://pan.baidu.com/s/1eQB7qgE
3.Google Protobuf3種語言的支持類庫:http://pan.baidu.com/s/1o6l87ay
Unity使用Protobuf:
在Assets文件夾下創建Plugins文件夾,將解壓后的Protobuf文件夾中的Full文件夾下的unity文件夾拷貝到Plugins文件夾即可。
注意:這種方式在IOS平台上運行會報錯,具體的解決方法可以看下面的文章:
Java使用Protobuf:
我這里直接提供創建好的jar文件,直接引入項目即可:http://pan.baidu.com/s/1hqhbbms