时间:2021-05-20
我们先封装一下接口,如下,把EdtUtil.cs放置在Assets/Editor目录中
// EdtUtil.cs using System;using UnityEditor;using UnityEngine;using System.Collections.Generic;using System.IO;using System.Threading;using System.Text; class EdtUtil{ public static System.Diagnostics.Process CreateShellExProcess(string cmd, string args, string workingDir = "") { var pStartInfo = new System.Diagnostics.ProcessStartInfo(cmd); pStartInfo.Arguments = args; pStartInfo.CreateNoWindow = false; pStartInfo.UseShellExecute = true; pStartInfo.RedirectStandardError = false; pStartInfo.RedirectStandardInput = false; pStartInfo.RedirectStandardOutput = false; if (!string.IsNullOrEmpty(workingDir)) pStartInfo.WorkingDirectory = workingDir; return System.Diagnostics.Process.Start(pStartInfo); } public static void RunBat(string batfile, string args, string workingDir = "") { var p = CreateShellExProcess(batfile, args, workingDir); p.Close(); } public static string FormatPath(string path) { path = path.Replace("/", "\\"); if (Application.platform == RuntimePlatform.OSXEditor) path = path.Replace("\\", "/"); }}现在,我们在工程Assets外层有一个batFiles目录,里面有一个gen_client_cfg.bat脚本
我们想通过Unity菜单执行这个脚本,例
using UnityEngine;using UnityEditor; class Test{ private static void RunMyBat(string batFile,string workingDir) { var path = EdtUtil.FormatPath(workingDir); if (!System.IO.File.Exists(path)) { GameLogger.LogError("bat文件不存在:" + path); } else { EdtUtil.RunBat(batFile, "", path); } } [MenuItem("Tools/执行gen_client_cfg.bat")] private static void Run() { // 执行bat脚本 RunBat("gen_client_cfg.bat", Application.dataPath + "/../batFiles/"); }}点击菜单 【Tools】-【执行gen_client_cfg.bat】即可在Unity中直接执行bat脚本了
补充:unity运行bat文件并隐藏cmd窗口
懒散几年了,今天重拾学习计划。
Unity中调用bat文件的方法和因此cmd窗口的设置:
需要添加库
using System.Diagnostics;方法代码:
public static System.Diagnostics.Process CreateShellExProcess(string cmd, string args, string workingDir = "") { var pStartInfo = new System.Diagnostics.ProcessStartInfo(cmd); pStartInfo.Arguments = args; pStartInfo.CreateNoWindow = false; pStartInfo.UseShellExecute = true; // pStartInfo.WindowStyle = ProcessWindowStyle.Hidden; pStartInfo.RedirectStandardError = false; pStartInfo.RedirectStandardInput = false; pStartInfo.RedirectStandardOutput = false; if (!string.IsNullOrEmpty(workingDir)) pStartInfo.WorkingDirectory = workingDir; return System.Diagnostics.Process.Start(pStartInfo); } public void RunBat(string batfile, string args, string workingDir = "") { var p = CreateShellExProcess(batfile, args, workingDir); p.Close(); }上面代码注释掉的那行就是隐藏窗口的方法。需要注意的是:
如果proc.StartInfo.UseShellExecute为false,使用:
proc.StartInfo.CreateNoWindow = true;如果proc.StartInfo.UseShellExecute为true,通过以下方式为进程进行设置:
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动。代码如下:C#脚本(在Unity5.5.1下能运行):usingSystem.Coll
目录开门见山示例步骤1、备份语句2、bat脚本3、bat脚本添加导出语句开门见山1、备份的语句能执行2、创建一个检单bat脚本能执行3、把备份的语句放到bat脚
Unity自带陀螺仪功能,今天就利用陀螺仪实现一个VR相机功能。步骤如下:1、打开Unity,创建一个新的C#脚本GyroController.cs,并挂在Ma
本文实例为大家分享了unity实现车方向盘转动效果的具体代码,供大家参考,具体内容如下效果:C#脚本如下:usingSystem;usingSystem.Col
断点调试功能可谓是程序员必备的功能了。Unity3D支持编写js和c#脚本,但很多人可能不知道,其实Unity3D也能对程序进行断点调试的。不过这个断点调试功能