1. 程式人生 > >【Unity】UGUI Image元件檢視面板編輯器擴充套件(ImageEditor類)

【Unity】UGUI Image元件檢視面板編輯器擴充套件(ImageEditor類)

問題描述

    說到Unity的檢視面板編輯器擴充套件,相信大家都不會陌生。但是當你嘗試用同樣的方式去擴充套件UGUI的元件時,會發現根本沒有效果。

解決方案

    這個問題的解決方案有兩個關鍵點:

  1. 用繼承的方式避開同系統編輯器擴充套件的衝突
  2. 所擴充套件的編輯器類要繼承ImageEditor類而不是Editor類

測試版本

    Unity 2017.1.1 f1

前提條件

    由於所要使用的ImageEditor類所在名稱空間為UnityEditor.UI,而這個名稱空間並不能直接敲出來。Unity一邊的錯誤提示是程式集引用錯誤。這是一個坑點。

解決方法:需要手動將Unity安裝路徑Unity\Editor\Data\UnityExtensions\Unity\GUISystem\Editor 下的UnityEditor.UI.dll檔案拷貝到當前專案的Assets檔案加下。

原始碼

// MyImage.cs
using UnityEngine;
using UnityEngine.UI;

public class MyImage : Image // 繼承Image類
{
     
}
// MyImageEditor.cs

using UnityEditor;
using UnityEngine;
using UnityEditor.UI;

[CustomEditor(typeof(MyImage))] // 定義子類的編輯器擴充套件
public class MyImageEditor : ImageEditor // 這裡要繼承ImageEditor類
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("測試按鈕"))
        {

        }
    }
}

具體操作

通過Unity選單新增Image物件,然後刪除原有的Image元件,新增新定義的MyImage指令碼即可。

為了方便使用,可以將新增好新指令碼的Image物件做成Prefab。

最終效果

參考文獻