Unity調(diào)用外部EXE或Shell命令

1、開門見山的需求有的時候饭弓,我們想把一些外部命令集成到unity中双饥,比如,你想通過點擊Unity中的一個按鈕弟断,就更新SVN(假設(shè)該項目是受SVN管理的)咏花。那么,就涉及到一個Unity調(diào)用外部可執(zhí)行文件、bat/shell等昏翰。這個需求是挺常見的苍匆,也是不難實現(xiàn)的。2棚菊、簡單明了的實現(xiàn)我們先封裝一個命令調(diào)用的函數(shù):[C#] 純文本查看 復(fù)制代碼

private static void processCommand(string command, string argument){
        ProcessStartInfo start = new ProcessStartInfo(command);
        start.Arguments = argument;
        start.CreateNoWindow = false;
        start.ErrorDialog = true;
        start.UseShellExecute = true;
 
        if(start.UseShellExecute){
                start.RedirectStandardOutput = false;
                start.RedirectStandardError = false;
                start.RedirectStandardInput = false;
        } else{
                start.RedirectStandardOutput = true;
                start.RedirectStandardError = true;
                start.RedirectStandardInput = true;
                start.StandardOutputEncoding = System.Text.UTF8Encoding.UTF8;
                start.StandardErrorEncoding = System.Text.UTF8Encoding.UTF8;
        }
 
        Process p = Process.Start(start);
 
        if(!start.UseShellExecute){
                printOutPut(p.StandardOutput);
                printOutPut(p.StandardError);
        }
 
        p.WaitForExit();
        p.Close();
}

好了浸踩,關(guān)于上述代碼相關(guān)的,如果大家有興趣可以自行去msdn查API统求。不關(guān)心的检碗,繼續(xù)往下看怎么使用。3码邻、細致耐心的命令行教學(xué)上面封裝的函數(shù)折剃,第一個參數(shù)即命令名,第二個參數(shù)為這個命令接受的參數(shù)像屋。對于沒有接觸命令行的同學(xué)怕犁。可以現(xiàn)在跟我做一遍感受下命令行己莺。如果對命令行比較熟悉的同學(xué)奏甫,可以直接跳到第4步。以下操作在WIN7中凌受。A:按下win+R扶檐,在出現(xiàn)的運行窗口輸入“cmd”,然后回車胁艰。B:這時候會出現(xiàn)一個命令行窗口款筑。C:輸入命令:notepad,然后回車

D:會發(fā)現(xiàn)打開了記事本腾么。

E:假設(shè)你D盤有個文件1.txtF:那么你可以在命令行輸入:notepad D:\1.txt 來直接使用記事本打開D盤的1.txt奈梳。

簡單來說,上面的notepad就是我們要傳入的封裝好的函數(shù)的第一個參數(shù)解虱。而D:\1.txt就是我們的第二個參數(shù)攘须。那么可執(zhí)行的命令有哪些呢?在系統(tǒng)變量PATH中所有路徑下的exe殴泰、bat/bash(linux) 文件都可以執(zhí)行于宙。你可以通過在命令行中輸入:echo %PATH% 來獲得PATH的信息。

也可以在“桌面”--“計算機”--“右鍵”--“屬性”--“高級系統(tǒng)設(shè)置”悍汛,在“環(huán)境變量”中查看PATH


雙擊這個path可以查看和編輯捞魁。如果沒有在path中的路徑。你想調(diào)用路徑下的exe只能用全路徑了离咐。比如你想調(diào)用 D:\AA\BB\CC\d.exe 這個exe谱俭。PATH中沒有D:\AA\BB\CC的話奉件。那么,你在命令行每次都要輸入 D:\AA\BB\CC\d.exe來調(diào)用他昆著。如果PATH中有D:\AA\BB\CC县貌。那么你在命令行可以直接輸入d.exe來調(diào)用他。好了凑懂。關(guān)于命令行的就講這么多啦~~進入第4步煤痕。4、兇殘粗暴地調(diào)用第二步定義的函數(shù)比如我們現(xiàn)在想更新SVN接谨,只要在Unity中找個地方(比如你寫個)執(zhí)行下面的代碼:[C#] 純文本查看 復(fù)制代碼
public class SvnForUnity{
 
        static string SVN_BASE = "F:\\Project\\Game";
 
 
        [MenuItem("SVN/Update", false, 1)]
        public static void SvnUpdate(){
                processCommand("svn", "update \""+SVN_BASE+"\"");
        }
 
 
        private static void processCommand(string command, string argument){
                ProcessStartInfo start = new ProcessStartInfo(command);
                start.Arguments = argument;
                start.CreateNoWindow = false;
                start.ErrorDialog = true;
                start.UseShellExecute = true;
 
                if(start.UseShellExecute){
                        start.RedirectStandardOutput = false;
                        start.RedirectStandardError = false;
                        start.RedirectStandardInput = false;
                } else{
                        start.RedirectStandardOutput = true;
                        start.RedirectStandardError = true;
                        start.RedirectStandardInput = true;
                        start.StandardOutputEncoding = System.Text.UTF8Encoding.UTF8;
                        start.StandardErrorEncoding = System.Text.UTF8Encoding.UTF8;
                }
 
                Process p = Process.Start(start);
 
                if(!start.UseShellExecute){
                        printOutPut(p.StandardOutput);
                        printOutPut(p.StandardError);
                }
 
                p.WaitForExit();
                p.Close();
        }
 
}

然后就發(fā)現(xiàn)Unity中多了SVN/Update的按鈕摆碉。你點擊他的時候他就更新SVN了咯。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疤坝,一起剝皮案震驚了整個濱河市兆解,隨后出現(xiàn)的幾起案子馆铁,更是在濱河造成了極大的恐慌跑揉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠巨,死亡現(xiàn)場離奇詭異历谍,居然都是意外死亡,警方通過查閱死者的電腦和手機辣垒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門望侈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勋桶,你說我怎么就攤上這事±裕” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵荤胁,是天一觀的道長。 經(jīng)常有香客問我屎债,道長仅政,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任圆丹,我火速辦了婚禮,結(jié)果婚禮上运褪,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好秸讹,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布檀咙。 她就那樣靜靜地躺著,像睡著了一般璃诀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棕诵,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天凿将,我揣著相機與錄音,去河邊找鬼牧抵。 笑死,一個胖子當(dāng)著我的面吹牛犀变,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播获枝,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嚣崭!你這毒婦竟也來了懦傍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谎脯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后娱俺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡荠卷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年烛愧,在試婚紗的時候發(fā)現(xiàn)自己被綠了掂碱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡疼燥,死狀恐怖蚁堤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情披诗,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布剥槐,位于F島的核電站,受9級特大地震影響粒竖,放射性物質(zhì)發(fā)生泄漏绍刮。R本人自食惡果不足惜温圆,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望得运。 院中可真熱鬧,春花似錦熔掺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鬓催。三九已至恨锚,卻和暖如春宇驾,著一層夾襖步出監(jiān)牢的瞬間猴伶,已是汗流浹背塌西。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工筝尾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筹淫。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓贸街,卻偏偏與公主長得像庵寞,于是被迫代替她去往敵國和親薛匪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 個人學(xué)習(xí)批處理的初衷來源于實際工作古沥;在某個迭代版本有個BS(安卓手游模擬器)大需求娇跟,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,718評論 0 11
  • linux基礎(chǔ)命令findfind / -name targetfilename 查找文件按時間查找也有參數(shù) -a...
    AQ王浩閱讀 1,487評論 0 5
  • 1.命令格式:ifconfig [網(wǎng)絡(luò)設(shè)備] [參數(shù)] 2.命令功能: ifconfig 命令用來查看和配置網(wǎng)絡(luò)設(shè)...
    Nuuuu閱讀 3,740評論 0 12
  • 第一節(jié) Shell概述 1.Shell是什么 Shell是一個命令行解釋器苞俘,它為用戶提供了一個向Linux內(nèi)核發(fā)送...
    littlexjing閱讀 1,937評論 0 1
  • win7 cmd管理員權(quán)限設(shè)置 net localgroup administrators 用戶名 /add 把“...
    f675b1a02698閱讀 5,196評論 0 11