【Unity】 HTFramework框架(二十四)Utility編輯器實用工具

更新日期:2019年11月11日。
Github源碼:[點我獲取源碼]

Utility編輯器實用工具簡介

Utility編輯器實用工具包含多個提升開發效率、調試效率的編輯器工具。

使用Utility

批處理工具 Component Batch

ComponentBatch批處理工具用於批量處理Scene場景中任意組件。

打開 Component Batch

在這裏插入圖片描述
在這裏插入圖片描述
1.Root:批處理的根物體。
2.Component Filter:批處理目標組件的名稱篩選器。
3.Component:批處理目標組件。
4.Include Inactive:是否涵蓋未激活的組件。
5.Collect:開始收集組件。

批處理 Component

例如批處理Canvas物體下的所有Text組件,我們將Canvas設置爲根物體。
在這裏插入圖片描述
在篩選欄中輸入text,再點擊Component下拉菜單,在篩選出來的組件中找到我們的目標組件UnityEngine.UI.Text。

注意:篩選器的作用只是爲了排除多餘的不符合要求的組件。
在這裏插入圖片描述
在這裏插入圖片描述
到此,我們直接點擊Collect按鈕就可以篩選出Canvas物體下的所有Text組件了,在這裏,我們就可以批量處理Canvas物體下的四個Text組件的屬性。
在這裏插入圖片描述

批處理工具 Project Batch

ProjectBatch批處理工具用於批量處理Project目錄中的任意對象。

打開 Project Batch

在這裏插入圖片描述
在這裏插入圖片描述
1.Folder:批處理的根文件夾。
2.Object Filter:批處理目標對象的名稱篩選器。
3.Object:批處理目標對象。
4.Collect:開始收集對象。

批處理 Object

例如批處理Image文件夾下的所有Texture對象,我們將Image設置爲根文件夾。
在這裏插入圖片描述
在篩選欄中輸入texture,再點擊Object下拉菜單,在篩選出來的對象中找到我們的目標對象UnityEngine.Texture。

注意:篩選器的作用只是爲了排除多餘的不符合要求的對象。
在這裏插入圖片描述
在這裏插入圖片描述
到此,我們直接點擊Collect按鈕就可以篩選出Image文件夾下的所有Texture對象了,在這裏,我們就可以批量處理所有Texture對象的屬性。
在這裏插入圖片描述

程序集查看器 Assembly Viewer

AssemblyViewer用於查看當前程序域的所有程序集,功能包括瀏覽程序集中所有類型,瀏覽類型的所有字段、屬性、方法等,是開發編輯器工具的得力助手。

打開程序集查看器

在這裏插入圖片描述

使用程序集查看器

例,使用程序集查看器實現編輯器的實用功能:快捷鍵清理控制檯

首先我們要想到,一鍵清理控制檯的功能是Unity編輯器提供的,所以我們只需要反射到那個清理控制檯的方法,直接調用就可以了。

所以最重要的工作就是找到那個Unity編輯器中用來清理控制檯的方法。

毫無疑問,所有編輯器功能無一例外都會從UnityEditor程序集開始查找,我們在Assembly欄找到UnityEditor程序集並選中它。
在這裏插入圖片描述
此時的Type欄便顯示UnityEditor程序集中的所有類型,我們在搜索框輸入log,經過一系列篩選,我們最終鎖定了LogEntries爲目標,在Type欄選中它。
在這裏插入圖片描述
很遺憾的得知他是一個封閉的內部類,通過繼承來實現是不可能的了,不過,再牛的內部類,也難不倒反射!我們在Member欄中找到Clear方法,不出所料,這就是一鍵清理控制檯的方法了。
在這裏插入圖片描述
萬事俱備,只欠代碼了!唰唰唰,我們三行搞定今天的任務:

        private static void ClearConsole()
        {
            Type logEntries = GetTypeInEditorAssemblies("UnityEditor.LogEntries");
            MethodInfo clearMethod = logEntries.GetMethod("Clear", BindingFlags.Static | BindingFlags.Public);
            clearMethod.Invoke(null, null);
        }

接下來,把這個方法加入到編輯器菜單,並定製快捷鍵就完工了,當然,框架中已經完成了這個功能。
在這裏插入圖片描述
結語:在一般情況下,即使有反編譯工具,能夠獲取到源代碼,但也無法改寫,所以如果只是用於反射,程序集查看器將是一個不錯的工具。

自定義執行器 Custom Executer

CustomExecuter可以在編輯器模式或運行模式,執行任何自定義操作,而無需觸發Unity編輯器的編譯。

打開執行器

在這裏插入圖片描述

動態執行

Namespace欄爲動態代碼引用的命名空間。
Assembly欄爲動態代碼引用的程序集。
Code欄輸入需要執行的代碼,直接點擊下方的Execute按鈕便可以執行,此過程不會觸發Unity編輯器的編譯,也就是說即便在運行時也可以使用(因爲觸發Unity編輯器的編譯時,會導致大量託管對象被銷燬,從而程序必須重新運行)。
在這裏插入圖片描述
我們點擊Execute按鈕執行,控制檯輸出:
在這裏插入圖片描述
我們可以在運行時輸入各種複雜但正確的代碼:
在這裏插入圖片描述
我們點擊Execute按鈕執行,控制檯輸出:
在這裏插入圖片描述

靜態執行

靜態執行比較簡單,也即是呼叫指定實體上的指定組件的指定方法。
Entity爲執行的實體。
Target爲執行的目標組件。
Method爲呼叫的方法。
Parameters爲傳入的實參列表。
在這裏插入圖片描述
例:我們手動呼叫Player實體的Find方法,查找其是否存在名爲Hand的子物體。
在這裏插入圖片描述
我們點擊Execute按鈕執行,控制檯輸出:
在這裏插入圖片描述
控制檯會打印本次呼叫的結果,返回值爲null,可知Player物體並不存在名爲Hand的子物體。

結語:Custom Executer是一個不錯的工具,優點顯而易見:它不需要經過Unity編輯器的編譯就可以執行你需要的任何邏輯!但缺點也不容忽視:幾乎沒有代碼高亮及提示!只能說這是一次不容錯過的鍛鍊純手打能力的機會!

框架實用特性

請參閱框架實用特性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章