拓展編輯器(四)_拓展布局

拓展布局數據庫

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中的物體時路徑的填寫。這段代碼輸出的是點擊的物體的名字。佈局

效果以下:ui

 

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

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

   AssetDatabase.AssetPathToGUID(string path)能夠得到制定路徑的資源的GUID,AssetDatabase.GetAssetPath(Object assetObject)能夠得到assetObject的路徑。orm

相關文章
相關標籤/搜索