在看AssetBundle Manager代码时发现一个可以用C#的Process借助MonoBleedingEdge运行一个exe执行程序。(猜猜exe是C#写的才有效)
static void Run ()
{
string pathToAssetServer = Path.Combine(Application.dataPath, "AssetBundleManager/Editor/AssetBundleServer.exe");
string pathToApp = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf('/'));
KillRunningAssetBundleServer();
BuildScript.WriteServerURL();
string args = Path.Combine (pathToApp, "AssetBundles");
args = string.Format("\"{0}\" {1}", args, Process.GetCurrentProcess().Id);
ProcessStartInfo startInfo = ExecuteInternalMono.GetProfileStartInfoForMono(MonoInstallationFinder.GetMonoInstallation("MonoBleedingEdge"), "4.0", pathToAssetServer, args, true);
startInfo.WorkingDirectory = Path.Combine(System.Environment.CurrentDirectory, "AssetBundles");
startInfo.UseShellExecute = false;
Process launchProcess = Process.Start(startInfo);
if (launchProcess == null || launchProcess.HasExited == true || launchProcess.Id == 0)
{
//Unable to start process
UnityEngine.Debug.LogError ("Unable Start AssetBundleServer process");
}
else
{
//We seem to have launched, let's save the PID
instance.m_ServerPID = launchProcess.Id;
}
}