unity編輯器拓展四——刪除場景空Animator元件
1.描述
美術做場景的時候,工作量很大,不會去按照程式的思維,把什麼都做得很規範。
就會造成有很多空的Animator元件留在物件上,那個物件會被複制使用,就會變得更
多。我們專案我遇到的最多的一次,一個場景有600多個空的Animator元件,好恐怖,
怎麼可能對效率沒有影響 今天就寫個方法一鍵刪除場景中空的Animator元件。
2.程式碼如下:
using System.Collections.Generic; using UnityEngine; using UnityEditor; public class SceneTool : EditorWindow { //直接點選選單按鈕,執行程式碼 //跟點選選單彈出面板的方式基本一致,只是在繪製面板的程式碼換成執行的方法即可 [MenuItem("Owen/DelectAnimator")] static void tranPoint() { int AnimatorCount = 0; //建立一個List陣列 List<GameObject> SceneRoot = new List<GameObject>(); //得到場景所有的根節點,並返回給上面的字典 UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects(SceneRoot); //遍歷字典 for (int i = 0; i < SceneRoot.Count; i++) { //將SceneRoot[i]當作每個父物體 進行遍歷 得到每個根節點的所有子物體transform元件 Transform[] m_Transform = SceneRoot[i].transform.GetComponentsInChildren<Transform>(); //GetComponentsInChildren:得到自身 與 子物體(包含子物體中的子物體) //List<Transform> m_Transform = new List<Transform>(); //foreach (Transform t in SceneRoot[i].transform) //{ // m_Transform.Add(t); //} //這種方法得到的陣列,就是隻有子物體(不包含父物體,也不包含子物體中的子物體) Debug.Log(m_Transform.Length); //遍歷每個子物體中的Animator狀況 for (int j = 0; j < m_Transform.Length; j++) { Animator s = m_Transform[j].GetComponent<Animator>(); if (m_Transform[j].GetComponent<Animator>()) { if (s.runtimeAnimatorController == null) { //編輯器只能用DestroyImmediate,不然無效或報錯 DestroyImmediate(s); AnimatorCount++; } } } } //將場景設定為dirty,為了刪除後儲存場景,這個在做編輯器的時候經常要用到 UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); Debug.Log("已經刪除了" + "" + AnimatorCount + "" +"個空Anirmator元件"); } }
相關推薦
unity編輯器拓展四——刪除場景空Animator元件
1.描述 美術做場景的時候,工作量很大,不會去按照程式的思維,把什麼都做得很規範。 就會造成有很多空的Animator元件留在物件上,那個物件會被複制使用,就會變得更 多。我們專案我遇到的最多的一次,一個場景有600多個空的Animator元件,好恐怖, 怎麼
【unity編輯器拓展】使用指令碼新增Prefab到場景中
有時候想自動將預製新增到場景中,但是又不想破壞預製的連結關係,這時候可以使用PrefabUtility類進行操作。 1、使用AssetDatabase.GetAssetPath獲取預製路徑 fore
Unity編輯器拓展之二:ReorderableList可重新排序的列表框(複雜使用)
先看效果gif圖: 如果沒有看過Unity編輯器拓展之一:ReorderableList可重新排序的列表框(簡單使用)的,可以先看這一篇: http://blog.csdn.net/qq_26999509/article/details/77782177 在此基
Unity編輯器拓展
一.什麼是編輯器拓展 Unity是一個編輯器,編輯器就是可以進行編輯的工具,比如我們的文字Text就是一個文字編輯器,那我們的Unity其實就是用來編輯遊戲的,編輯的擴充套件就是對編輯器本身的功能進行新增。但是由於Unity是不開源的引擎,所以我們只能使用特定的功能去編輯。
unity編輯器拓展之自動生成指令碼模板
專案開發過程中,UI面板有許多,關於UI面板上面按鈕,文字是應該宣告public直接拖拽賦值還是應該定義成private一層層去find,其中利弊各有說法,以前有個老大說是find會影響執行速度,但是現在的老大又不讓直接拖拽賦值,說實話這些東西都無所謂,用哪種方式主要
Unity編輯器拓展之二十一:拓展Unity模組,打造私人工具庫(二)
拓展Unity模組,打造私人工具庫(二) 前言: 上一篇,實現了基本Unity模組拓展的功能,本篇將介紹如何通過反射來實現匯入UnityPackage Gif示意圖 程式匯入UnityPackage 通過查閱UnityEditor原始碼發現
unity編輯器拓展二——一鍵調整scene中物件座標朝向
1.描述 在專案中,我們遇到很多這種情況,美術製作的時候從來不管座標朝向,真正使用起來就會有各種問題。 需要美術來調整座標朝向的時候,物體數量很多,就會很麻煩,很枯燥的工作,還得耐主性子一個一個調整。 如圖,我們今天要做的是不動任何物體的情況下,一鍵控
unity編輯器拓展七——指令碼建立模型
描述: 其實這個教程到處都是,我真正想做的是把模型分成N個等分,實現動態載入。但是在網上搜索了很久,也沒有搜尋 到合適的方法,要麼就是不寫清楚,捨不得把程式碼全部放出來。要麼就是自帶地形的切割,最想要的是,t4m 刷完後直 接將模型分成N分,所以只能苦逼的從
Unity編輯器拓展之六:利用反射開啟Unity Preferences Window
如何利用反射開啟Unity Preferences Window Unity Preferences Window如下圖所示: 作為Unity 的引數設定視窗,這個視窗支援新增項,當然本文不介紹這個內容,本次介紹如何利用反射、以及Unity Editor
Unity編輯器拓展之三:拓展Unity的Hierarchy面板
效果圖: 上圖中在Hierarchy右側繪製了Toggle,Label,以及自定義的texture和Unity原聲的Texture,知道了原理,其實這些都很簡單。。 這裡主要是使用了EditorApplication類下的HierarchyWindowI
unity編輯器擴充套件#2 GUILayout、EditorGUILayout 控制元件整理
GUILayout 裝飾類控制元件: GUILayout.FlexibleSpace(); GUILayout.Space(100);//空格,沒什麼好說的 GUILayout.Label("label"); GUILayout.Box(new GUICo
Unity 編輯器擴展 場景視圖內控制對象
eight tex ons 圖標 ble enca 研究 microsoft 敵人 如果有一個敵人生成器類。當中有個屬性range用來表示敵人生成的範圍區域大小。那麽能夠用OnDrawGizmos函數來繪制它在場景視圖所代表的區域大小。便於開發調試。這個敵人生成器類,類
(轉 )Unity對Lua的編輯器拓展
wid isnull view 菜單 操作 out rec 平臺 src 轉 http://blog.csdn.net/ZhangDi2017/article/details/61203505 當前版本的Unity(截至Unity5.5.x)中TextAsset類不支持後
編輯器拓展九——用代碼實現unity菜單命令
中一 post body 同時 selected 使用 最大的 自動調用 ima 描述 今天給美術寫了個工具,通過一些檢查把一些有問題的物件選出來,並讓其中一個處於選中狀態, 方便美術有方向的修改。中間遇到了一個問題,有問題的物件太多,點一次工具,需要按一下F來把
【unity實用技能】unity編輯器工具之加載預制(Prefab)和場景(Scene)
無在unity裏做打包或者幫策劃美術做工具的時候經常會需要把Prefab拉出來或者場景打開做檢驗工作 其實這個在上一篇在ui打包的文章裏有提到,不過重點不同,上篇重點是打包,這篇的重點是把裏面的一個小知識點拉出來講一講 接下來就講講兩者分別怎麽做 一、把預制Prefab拉出來 就是像我們平時把預制拉到這個地方
Unity編輯器:消空控制檯(Console)
1 static MethodInfo clearMethod = null; 2 /// <summary> 3 /// 清空log資訊 4 /// </summary> 5 private static void ClearConso
Unity 編輯器擴充套件 場景檢視內控制物件
using UnityEngine;using UnityEditor; [CustomEditor(typeof(EnemySpawn))]public class EnemySpawnEditor : Editor { void OnSceneGUI() { EnemySp
Unity編輯器開發,使用CustomPropertyDrawer實現枚舉中文顯示
常常 image list 動畫 但是 var tty tip enum 在Unity開發中,枚舉常常被用到。但是Unity自身對於枚舉值,並不能做好中文的支持。無論是Head或者Tool
Unity編輯器生成可配置編輯文件
prefab tga 可編輯 edit 字段 work highlight save csharp using UnityEditor; public class PoolManagerEditor { [MenuItem("Manager/Creat Game
編輯器拓展七——不實例化的情況下修改Assets下面的文件
如果 ica 文件 () pan 通過 個數 material spec 描述 1.今天接了個任務,因為公司的項目展示界面的人物與武器都用了standard與standard(specular steup),這個兩個自帶的材質球是帶霧效的,然後收到場景的影響 在ui界面