unity,写工具时(不是运行时)调用命令行或者python脚本

public delegate void OnDataReceived(string data);
        static void onreceive(string data)
        {
            if (data.Length > 0)
            {
                UnityEngine.Debug.Log(data);
            }
        }
        OnDataReceived recive = new OnDataReceived(onreceive);
        public void CreateCmd(string cmd)
        {
            Process CmdProcess = new Process();
            CmdProcess.StartInfo.FileName = "cmd.exe";
            CmdProcess.StartInfo.CreateNoWindow = true;         // 不创建新窗口    
            CmdProcess.StartInfo.UseShellExecute = false;       //不启用shell启动进程  
            CmdProcess.StartInfo.RedirectStandardInput = true;  // 重定向输入    
            CmdProcess.StartInfo.RedirectStandardOutput = true; // 重定向标准输出    
            CmdProcess.StartInfo.RedirectStandardError = true;  // 重定向错误输出
            CmdProcess.StartInfo.Arguments = "/c " + cmd;//“/C”表示执行完命令后马上退出  
            //CmdProcess.StartInfo.Arguments = cmd;
            CmdProcess.Start();//执行 
            CmdProcess.OutputDataReceived += (sender, e) =>
            {
                recive?.Invoke(e.Data);
            };

            CmdProcess.ErrorDataReceived += (sender, e) =>
            {
                recive?.Invoke(e.Data);
            };

            CmdProcess.EnableRaisingEvents = true;
            CmdProcess.BeginOutputReadLine();
            CmdProcess.BeginErrorReadLine();
            //UnityEngine.Debug.Log(CmdProcess.StandardOutput.ReadToEnd());
            //CmdProcess.StandardOutput.ReadToEnd();//获取返回值   
            CmdProcess.WaitForExit();//等待程序执行完退出进程   
            CmdProcess.Close();//结束
        }

注意一点,unity的命令行默认目录是项目根目录,并不是工具脚本所在目录。
可以在调用cmd指令的时候 调用dir(windows) 或者ls(linux||mac) 看一下返回的文件名都是哪些,看看当前目录是哪里。

调用python的话,直接官网安装一个嵌入式的免安装python,通过相对路径到python目录下面直接执行就好了。

这里python打印中文会乱码,我还没有研究,后面再看吧。

吐槽,查了好几个,都不加这两行,你们能打印的出来??我快吐了。。
CmdProcess.BeginOutputReadLine();
CmdProcess.BeginErrorReadLine();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值