Unity中使用c# Process在Mac上异常Win32Exception:

http://blog.dou.li/Process-Mac-Win32Exception.html

在Unity中调用TexturePacker打包图集,核心代码如下:

    Process p = new Process ();
    p.StartInfo.FileName = "TexturePacker";
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    p.WaitForExit();

在Windows上运行正常,Mac上报异常:

Win32Exception: ApplicationName='TexturePacker', CommandLine='',
CurrentDirectory='' System.Diagnostics.Process.Start_noshell
(System.Diagnostics.ProcessStartInfo startInfo,
System.Diagnostics.Process process)
System.Diagnostics.Process.Start_common
(System.Diagnostics.ProcessStartInfo startInfo,
System.Diagnostics.Process process) System.Diagnostics.Process.Start
() (wrapper remoting-invoke-with-check)
System.Diagnostics.Process:Start ()

一番查找发现,Mac上应该用open命令调用目标应用,Mac版本的代码修改如下:

    Process p = new Process ();
    p.StartInfo.FileName = "open";
    p.StartInfo.Arguments = "-a TexturePacker -n --args xxx";
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    p.WaitForExit();

-n 启动新的TexturePacker实例
--args 后面跟TexturePacker需要的参数

参考:
http://stackoverflow.com/questions/2255624/how-to-use-process-start-or-equivalent-with-mono-on-a-mac-and-pass-in-argument

转载请注明:兜里-http://blog.dou.li/Process-Mac-Win32Exception.html

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐