Unity到使用bat跨平臺編譯打包--unity batchmode 模式(二)

上篇介紹一下基本要用到的命令,要想深入學的,可以去看一下bat基本語法,基本使用batch模式打包就用到的就這一些。

一、啓動Unity Batchmode,並執行一個函數

@echo off
pushd %~dp0
echo "---------------update proj.......------------------"
"C:\Program Files\Unity2017.4.24f1\Editor\Unity.exe" -quit -batchmode ^
-projectPath "%~dp0../../../" ^
-executeMethod AbTools.SyncProjFromRemote ^
-lrd %lrd% ^
-rrd %rrd% ^
-logFile build_update_proj.log
if errorlevel 1 goto _err
goto _continue
:_err
echo "unity error"
type build.log
popd
pause
exit
:_continue
popd

直接上源碼,在來分析。

給定了一個Unity的安裝路徑"C:\Program Files\Unity2017.4.24f1\Editor\Unity.exe",執行了-quit退出並以batchmode啓動,

-projectPath:

後面放的是需要啓動的Unity工程的目錄

-executeMethod:

啓動後會執行的函數,AbTools.SyncProjFromRemote注意這是寫在Unity的裏的C#腳本,而且是靜態方法

-lrd %lrd% :

這個涉及到進程通訊了,通俗的講,lrd是在bat設定的一個自定義變量,要把這個變量傳到Unity的腳本中使用怎麼做?

將lrd加入命令行,在C#中使用c#Environment.GetCommandLineArgs來獲取這個參數的值。

這裏做的操作是,將lrd和rrd通過bat賦值後,在寫入命令行,通過c#Environment.GetCommandLineArgs獲取命令行參數列表,在從中讀取key,在C#中調用lrd和rrd參數。

-logFile:

輸出一個日誌文件,名字爲build_update_proj.log,在當前路徑下

-------------------------------------------------------------------------------------------------------------

二、多函數切換調用

知道了上面這些就能做很多事情了,在bat讓用戶輸出一些自定義信息,然後傳入到Unity裏進行參數配置,就可以做一下打包相關的操作了 

上面只是運行了一個函數,如果我們寫了很多個函數,比如有拷貝的、有打AB的,還有刪除某些配置的很多函數呢

比如AbTools腳本里有個BuildAB的靜態方法,在執行完上面AbTools.SyncProjFromRemote的方法後,如何在單獨去調用這個BuildAB呢,(你也可以在C#裏面直接調用,但有的時候,在某個步驟出錯後,不需要從頭開始執行,而直接從出錯的步驟繼續執行,所以我們會把功能完全獨立開來,以便於功能方法能單獨調用 )

調用其實還是很上面一樣,重複一樣的代碼只需要替換掉方法名稱即可,因爲執行了quit後,會退出Unity程序,但再次啓動重新執行方法。比如這樣

"C:\Program Files\Unity2017.4.24f1\Editor\Unity.exe" -quit -batchmode ^
-projectPath "%~dp0../../../" ^
-executeMethod AbTools.BuildAB^
-lrd %lrd% ^
-rrd %rrd% ^
-logFile BuildAB.log

跟上面一樣,改了一個方法名和一個輸出的日誌名,因爲我們把日誌分開存儲,便於定位問題在哪一步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章