游戏资源版本对比中需要一个版本号,如果采用git版本控制,可以利用commit id作为版本号。下面是如何在Unity3d工程c#获取git commit id。
using System.Diagnostics;
using UnityEditor;
using Debug = UnityEngine.Debug;
public class GitUtility {
private static string EnvironmentVariable {
get {
string sPath = System.Environment.GetEnvironmentVariable("Path");
var result = sPath.Split(';');
for (int i = 0; i < result.Length; i++) {
if (result[i].Contains(@"Git\bin")) {
sPath = result[i];
}
}
return sPath;
}
}
[MenuItem("Assets/Test/获取Git Commit ID")]
public static void GetCommitID() {
string gitPath = System.IO.Path.Combine(EnvironmentVariable, "git.exe");
Debug.LogFormat("环境路径:{0}", gitPath);
Process p = new Process();
p.StartInfo.FileName = gitPath;
p.StartInfo.Arguments = "rev-parse HEAD";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.OutputDataReceived += OnOutputDataReceived;
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
}
private static void OnOutputDataReceived(object sender, DataReceivedEventArgs e) {
if (e != null && !string.IsNullOrEmpty(e.Data)) {
Debug.Log(e.Data);
}
}
}