【Unity】UGUI Image元件檢視面板編輯器擴充套件(ImageEditor類)
阿新 • • 發佈:2019-01-23
問題描述
說到Unity的檢視面板編輯器擴充套件,相信大家都不會陌生。但是當你嘗試用同樣的方式去擴充套件UGUI的元件時,會發現根本沒有效果。
解決方案
這個問題的解決方案有兩個關鍵點:
- 用繼承的方式避開同系統編輯器擴充套件的衝突
- 所擴充套件的編輯器類要繼承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。