unity.exe 只允许存在一个 如果开了ide 或者之前的没关掉 就不能运行了
C:
cd C:\Program Files\Unity\Editor\2021.3.6f1c1\Editor\
Unity.exe ^
-quit ^
-batchmode ^
-projectPath E:\puerts\UnityJenkins ^
-executeMethod Main.Build
C#代码放到任意Editor目录里
using System;
using UnityEditor;
using UnityEngine;
using UnityEditor.Build.Reporting;
class Main
{static void Build(){BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();buildPlayerOptions.scenes = new[] { "Assets/Scenes/SampleScene.unity" };buildPlayerOptions.locationPathName = "AndroidBuild.apk";buildPlayerOptions.target = BuildTarget.Android;buildPlayerOptions.options = BuildOptions.None;BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);BuildSummary summary = report.summary;if (summary.result == BuildResult.Succeeded){Debug.Log("Build succeeded: " + summary.totalSize + " bytes");}if (summary.result == BuildResult.Failed){Debug.Log("Build failed");}}static string[] GetBuildScenes(){List names = new List();foreach (EditorBuildSettingsScene e in EditorBuildSettings.scenes){if (e == null)continue;if (e.enabled)names.Add(e.path);}return names.ToArray();}
}
也可以在命令行里加参数
c#读 String[] arguments = Environment.GetCommandLineArgs();
c#里输出的内容 都在Editor.log里
地址是
C:\Users\Administrator\AppData\Local\Unity\Editor
可以在ide的这里打开
里面有输出堆栈和内容方便调试

日志讲解
https://docs.unity3d.com/cn/current/Manual/LogFiles.html
可以安装 unity的插件

路径里写到版本号就可以了 插件会自己进去读unity.exe
增加步骤


这样就可以了
优点是打印到 Editor.log 里的内容 会直接输出到 jenkins 里,方便查看。
缺点是 不能使用 jenkins 里的自定义参数
自己写批处理

更灵活,符合要求。但是不能打印输出,遇到问题了看不到。
需要自己再写一个脚本
名字自己起 比如a.py 放到unity.exe平级目录
然后

import os,sys,string,datetime,time,threadingg_bStop = False
class OutputLogThread(threading.Thread):m_logFilePath = ''def run(self):global g_bStopnPosRead = 0fp = Noneprint 'OutputLogThread Start'while g_bStop == False:if os.path.isfile(self.m_logFilePath):if fp == None:fp = open(self.m_logFilePath, 'r')if fp != None:fp.seek(nPosRead)allLines = fp.readlines()nPosRead = fp.tell()fp.close()fp = Nonefor lines in allLines:print linestime.sleep(0.5)def __init__(self, logPath):threading.Thread.__init__(self)self.m_logFilePath = logPathif __name__ == '__main__':if len(sys.argv) < 2:print 'not find unity path'sys.exit(-1)logFilePath = 'editor.txt'unityRunParm = ''for i in range(len(sys.argv)):if i > 0:unityRunParm += ' ' + sys.argv[i]unityRunParm += ' -logfile ' + logFilePathif os.path.isfile(logFilePath):os.remove(logFilePath)logThread = OutputLogThread(logFilePath)logThread.start()os.system(unityRunParm)g_bStop = TruelogThread.join()
也有一个工具
https://github.com/mr-kelly/unity_realtime_log
可以试试