Unity編輯器下重啟的方法
Unity編輯器下重啟的方法
我們項(xiàng)目AssetBundle打包走的是全自動(dòng)化流程,打包之前要進(jìn)行各種資源檢測(cè),如果檢測(cè)順利通過(guò),則進(jìn)入打包,否則提示錯(cuò)誤資源名稱(chēng)及路徑,打包中斷!有時(shí)候即使資源檢測(cè)通過(guò)也會(huì)打包崩潰,初步斷定是Unity的內(nèi)存爆了,因?yàn)閁nity在編輯器下打開(kāi)工程中的資源不會(huì)釋放掉,所以?xún)?nèi)存一直在占用,打包時(shí)要進(jìn)行一系列資源依賴(lài)分析,我們也知道,如果資源量非常大時(shí)候,Unity要保存資源依賴(lài)的堆棧,所以會(huì)有內(nèi)存崩掉的風(fēng)險(xiǎn),所以我就想著,打包之前重啟下Unity,讓Unity釋放掉一些沒(méi)用的內(nèi)存。完成這個(gè)工作,有以下幾個(gè)步驟:
1.獲取Unity的安裝路徑,實(shí)現(xiàn)方法有兩種:
方法一:簡(jiǎn)單粗暴,E:\\Unity 5.5.2\\Unity\\Editor\\Unity.exe,不具有通用性。
方法二:通過(guò)注冊(cè)包表獲取安裝路徑,獲取操作如下:
private static string GetUnityPath() { #region 通過(guò)注冊(cè)便獲取Unity安裝路徑 var regKey = @"Unity package file\DefaultIcon"; RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey(regKey); string pathName = (string)registryKey.GetValue(null); // "(Default)" if (string.IsNullOrEmpty(pathName)) { return null; } int index = pathName.LastIndexOf(","); if (index != -1) { var exepath = pathName.Substring(0, index).Replace("\"", string.Empty); var binpath = Path.GetDirectoryName(exepath); var di = new DirectoryInfo(binpath); if (di.Parent != null) { return di.Parent.FullName; } } return null; #endregion }
第二步:創(chuàng)建一個(gè)新的Unity進(jìn)程。
static void StartPeocess(string applicationPath) { Process po = new Process(); po.StartInfo.FileName = applicationPath; po.Start(); }
第三步:殺掉之前舊的進(jìn)程
string[] args = unityPath.Split('\\'); Process[] pro = Process.GetProcessesByName(args[args.Length - 1].Split('.')[0]);//Unity foreach (var item in pro) { UnityEngine.Debug.Log(item.MainModule); item.Kill(); }
好了,這樣基本上就搞定了!
完整代碼:
using Microsoft.Win32; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using UnityEditor; using UnityEngine; public class ReStartUnityTools : MonoBehaviour { public static string UnityExePath = "E:\\Unity 5.5.2\\Unity\\Editor\\Unity.exe"; [MenuItem("Tools/ReStartUnity(重啟Unity)")] public static void ReStartUnity() { string unityPath = UnityExePath;// GetUnityPath();公司電腦通過(guò)注冊(cè)表是可以的,家里電腦不行,你們可以用這個(gè)函數(shù)試下,實(shí)在不行先寫(xiě)上Unity安裝路徑吧 StartPeocess(unityPath); string[] args = unityPath.Split('\\'); Process[] pro = Process.GetProcessesByName(args[args.Length - 1].Split('.')[0]);//Unity foreach (var item in pro) { UnityEngine.Debug.Log(item.MainModule); item.Kill(); } } private static string GetUnityPath() { #region 通過(guò)注冊(cè)便獲取Unity安裝路徑 var regKey = @"Unity package file\DefaultIcon"; RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey(regKey); string pathName = (string)registryKey.GetValue(null); // "(Default)" if (string.IsNullOrEmpty(pathName)) { return null; } int index = pathName.LastIndexOf(","); if (index != -1) { var exepath = pathName.Substring(0, index).Replace("\"", string.Empty); var binpath = Path.GetDirectoryName(exepath); // var di = new DirectoryInfo(binpath); if (di.Parent != null) { return di.Parent.FullName; } } return null; #endregion } static void StartPeocess(string applicationPath) { Process po = new Process(); po.StartInfo.FileName = applicationPath; po.Start(); } }
運(yùn)行結(jié)果:
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
上一篇:C語(yǔ)言樹(shù)狀數(shù)組的實(shí)例詳解
欄 目:C語(yǔ)言
本文標(biāo)題:Unity編輯器下重啟的方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1106.html
您可能感興趣的文章
- 01-10大數(shù)(高精度數(shù))模板(分享)
- 01-10深入解析Linux下\r\n的問(wèn)題
- 01-10Linux C 獲取進(jìn)程退出值的實(shí)現(xiàn)代碼
- 01-10解析Linux下的時(shí)間函數(shù):設(shè)置以及獲取時(shí)間的方法
- 01-10深入探討linux下進(jìn)程的最大線(xiàn)程數(shù)、進(jìn)程最大數(shù)、進(jìn)程打開(kāi)的文
- 01-10基于linux下獲取時(shí)間函數(shù)的詳解
- 01-10深入sizeof的使用詳解
- 01-10Linux下semop等待信號(hào)時(shí)出現(xiàn)Interrupted System Call錯(cuò)誤(EINTR)解決方法
- 01-10深入解析C中的數(shù)值與真假
- 01-10用c語(yǔ)言實(shí)現(xiàn)冒泡排序,選擇排序,快速排序


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫(xiě)分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫(xiě)函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子