2017-02-21 6 views
1

Я реализовал кнопку самостоятельно, которая наследуется от UnityEngine.UI.Button, и у нее есть собственный пользовательский инспектор.Unity custom 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.

что-то вроде:

[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; 
     } 
    } 
} 
Смежные вопросы