一.Jenkins中设置构建参数:
1.增加WorkPath之后的第二个构建参数“Version”,默认值0.1。
2.增加第三个构建字符参数“Name”,默认值RealFram。
3.增加第四个构建字符参数“Build”,默认值0。
4.增加第五个构建布尔值参数“Debug”,默认值true。
二.Jenkins中设置需要给Unity3d构建时传递的参数:
1.在Unity3d命令行中的调用编辑器方法后面添加参数,参数形式为Paraname=$Paraname,用空格隔开。
2.最终形式:"-projectpath E:\MindjetsManage\Jenkins_Learning\RealFram -quit -batchmode -executeMethod BuildApp.BuildPC Version=$Version Name=$Name Build=$Build Debug=&Debug -logFile "D:\log.txt""
三.Unity中接收构建参数:
1.编写存储参数的数据类:
public class BuildSetting
{
//版本号
public string Version = "";
//build次数
public string Build = "";
//程序名称
public string Name = "";
//是否debug
public bool Debug = true;
//渠道
public Place Place = Place.None;
//多线程渲染
public bool MulRendering = true;
//是否IL2CPP
public bool IL2CPP = false;
//是否开启动态合批
public bool DynamicBatching = false;
}
2.接收构建参数的方法:
/// <summary>
/// 根据jenkins的参数读取到buildsetting里
/// </summary>
/// <returns></returns>
static BuildSetting GetPCBuildSetting()
{
string[] parameters = Environment.GetCommandLineArgs();
BuildSetting buildSetting = new BuildSetting();
foreach (string str in parameters)
{
if (str.StartsWith("Version"))
{
var tempParam = str.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
buildSetting.Version = tempParam[1].Trim();
}
}
else if (str.StartsWith("Build"))
{
var tempParam = str.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
buildSetting.Build = tempParam[1].Trim();
}
}
else if (str.StartsWith("Name"))
{
var tempParam = str.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
buildSetting.Name = tempParam[1].Trim();
}
}
else if (str.StartsWith("Debug"))
{
var tempParam = str.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
bool.TryParse(tempParam[1], out buildSetting.Debug);
}
}
}
return buildSetting;
}
3.设置PlayerSetting参数:
/// <summary>
/// 根据读取的数据在unity里面设置对应
/// </summary>
static string SetPcSetting(BuildSetting setting)
{
string suffix = "_";
if (!string.IsNullOrEmpty(setting.Version))
{
PlayerSettings.bundleVersion = setting.Version;
suffix += setting.Version;
}
if (!string.IsNullOrEmpty(setting.Build))
{
PlayerSettings.macOS.buildNumber = setting.Build;
suffix += "_" + setting.Build;
}
if (!string.IsNullOrEmpty(setting.Name))
{
PlayerSettings.productName = setting.Name;
}
if (setting.Debug)
{
EditorUserBuildSettings.development = true;
EditorUserBuildSettings.connectProfiler = true;
suffix += "_Debug";
}
else
{
EditorUserBuildSettings.development = false;
}
return suffix;
}