今天研究了一下Unity的全自动打包,(其实就是使用jenkins调用一下bat或者shell),我的测试环境是win10
首先,我们要在unity内写一个静态方法供我们调用打包,类似这样
[MenuItem("Tools/Test")]
public static void UnityTest()
{
Debug.LogError("*******************start*******************");
//Debug.unityLogger.logEnabled = false;
List<string> args = new List<string>();
foreach (string item in System.Environment.GetCommandLineArgs())
{
if (!item.StartsWith("--")) continue;
string arg = item.Split('=')[1];
args.Add(arg);
Debug.LogError(arg);
}
string NowPath = args[2]+@"\"+ args[1]+ args[0]+ args[3] + ".exe";
NowPath = NowPath.Replace("\"", "");
Debug.LogError(NowPath);
BuildPipeline.BuildPlayer(GetBuildScenes(), NowPath, BuildTarget.StandaloneWindows64, BuildOptions.None);
Debug.LogError("*******************end*********************");
}
static string[] GetBuildScenes()
{
List<string> pathList = new List<string>();
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
if (scene.enabled)
{
pathList.Add(scene.path);
}
}
return pathList.ToArray();
}
之后写一个批处理,调用我们写好的方法,传参....
rem 发布工具
@echo off
set UNITY_PATH="C:\Program Files\Unity\Unity2018.2.13\Editor\Unity.exe"
set UNITY_PROJECT_PATH="D:\WorkSpace\UnityWorkSpace\TestBuild"
set UNITY_LOG_PATH=%cd%\unity_log.txt
set UNITY_OUT_PATH="D:\WorkSpace\UnityWorkSpace\TestBuild\Build"
echo 启动 Unity.exe 请稍后...
%UNITY_PATH% -quit -batchmode -logFile %UNITY_LOG_PATH% -projectPath %UNITY_PROJECT_PATH% -executeMethod ToolsMenuEditor.UnityTest --version=%Version% --name=%Name% --outpath=%UNITY_OUT_PATH% --change=%Channel%
更多的命令行可以参考官网
https://docs.unity3d.com/Manual/CommandLineArguments.html
下载一个jenkins,安装好构建一个项目,选择参数化构建过程,需要注意一下%参数名%接收参数,之后就可以愉快的打包啦