1. 程式人生 > >拓展編輯器(四)

拓展編輯器(四)

strong 視圖 創建 加載 assets wid 腳本 {0} .project

拓展布局

using UnityEngine;
using UnityEditor;

public class Script_03
{
    [InitializeOnLoadMethod]
    static void InitializeOnLoadMethod()
    {
        EditorApplication.projectWindowItemOnGUI = delegate (string guid,
              Rect selectionRect)
        {
            //在project視圖中選擇一個資源
            if
(Selection.activeObject && guid == AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath (Selection.activeObject))) { //設置拓展按鈕區域 float width = 50f; selectionRect.x += (selectionRect.width - width); selectionRect.y
+= 2f; selectionRect.width = width; GUI.color = Color.red; //點擊事件 if (GUI.Button(selectionRect, "click")) { //string[] str = Selection.assetGUIDs; //string path = AssetDatabase.GUIDToAssetPath(str[0]);             //Debug.LogFormat("路徑:{0}", path;              

//Debug.LogFormat("路徑:{0}", AssetDatabase.GetAssetPath(Selection.activeObject)); Debug.LogFormat("click:{0}",Selection.activeObject.name); } GUI.color = Color.white; } }; } }

  在方法前面添加[InitializeOnLoadMethhod]表示此方法會在C#代碼每次編譯完成後首先調用,監聽EditorApplication.projectWindowItemOGUI委托,即可使用GUI方法來繪制自定義的UI元素(在這裏我們添加了一個按鈕)。此外,GUI還提供了豐富的元素接口,可以用來添加文本,圖片,滾動條和下拉框等復雜元素。

  在if語句中註釋的語句為兩種輸出所點擊文件路徑的方法,這樣方便在代碼獲取Assets中的物體時路徑的填寫。這段代碼輸出的是點擊的物體的名字。

效果如下:

技術分享圖片

PS:1,資源數據庫 (AssetDatabase) 是允許您訪問工程中的資源的 API。此外,其提供方法供您查找和加載資源,還可創建、刪除和修改資源。Unity 編輯器 (Editor) 在內部使用資源數據庫 (AssetDatabase) 追蹤資源文件,並維護資源和引用資源的對象之間的關聯。資源數據庫 (AssetDatabase) 接口僅適用於編輯器,不可用於內置播放器。和所有其他編輯器類一樣,其只適用於置於編輯器 (Editor) 文件夾中的腳本。具體用法可以自行百度。

  2,Unity會在首次導入資源文件時生成.meta文件,並和資源文件一起存儲在相同的目錄中。文件GUID存儲於.meta文件中,每個資源的GUID都是唯一的。

   AssetDatabase.AssetPathToGUID(string path)可以獲得制定路徑的資源的GUID,AssetDatabase.GetAssetPath(Object assetObject)可以獲得assetObject的路徑。

拓展編輯器(四)