当前位置:   article > 正文

Unity到使用bat跨平台编译打包--unity batchmode 模式(二)

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

跟上面一样,改了一个方法名和一个输出的日志名,因为我们把日志分开存储,便于定位问题在哪一步

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/341540
推荐阅读
相关标签
  

闽ICP备14008679号