2017-02-21 27 views
1

我已經實現了一個自己的按鈕,它從UnityEngine.UI.Button繼承,並且它有自己的自定義檢查器。Unity自定義UnityEngine.UI按鈕檢查器

public class TwoStateButton : Button 
{ 
    ... 
} 

[CustomEditor(typeof(TwoStateButton))] 
public class TwoStateButtonEditor : Editor 
{ 
    public override void OnInspectorGUI() 
    { 
     base.OnInspectorGUI(); 
    } 

    ... 
} 

我有其中的按鈕檢查過渡模式設置的行爲不正確我的課TwoStateButton只要我有一個自定義編輯工作的問題。

按鈕檢查器看起來像this,如果刪除或註釋掉自定義編輯器類,TwoStateButton檢查器也會如此。

但我的自定義檢查器看起來像this,儘管我沒有對檢查器做任何更改。

所以基本上,取決於過渡模式的哪些字段是可見變化的行爲會丟失,並且始終顯示所有設置。

我試過換base.OnInspectorGUI();DrawDefaultInspector();,但它沒有效果。 我曾嘗試導入UnityEditor.UI庫,並使TwoStateButtonEditor繼承自ButtonEditor而不是Editor,但它沒有任何效果。

有沒有辦法讓自定義編輯器,但仍然保持過渡模式設置行爲?

回答

1

的原因,你的編輯器並不像巴頓的編輯器,是因爲你正在創建一個新的自定義編輯器,而不是從自定義按鈕編輯器擴展。如果你這樣做,你會得到你想要的行爲。您也可以複製Button的自定義編輯器並根據需要進行更改。

Button Editor延伸從Selectable Editor

+0

我之前嘗試,並且描述的,沒有效果。但是我一定犯了錯誤,因爲那現在解決了我的問題。謝謝! – Helena

+0

我做錯了最有可能的是我繼承了ButtonEditor,但是調用DrawDefaultInspector()而不是base.OnInspectorGUI(),如果任何人有這個問題。 – Helena

0

你可以通過檢查OnInspectorGui方法中的Transition模式來實現。

類似:

[CustomEditor(typeof(TwoStateButton))] 
public class TwoStateButtonEditor : Editor 
{ 
    public override void OnInspectorGUI() 
    { 
     base.OnInspectorGUI(); 
     switch(target.transitionMode) 
     { 
      case Automatic: 
       //Automatic code 
       [...] 
       break; 
      case ColorTint: 
       //Color Tint code 
       [...] 
       break; 
      default: 
       break; 
     } 
    } 
}