推測で申し訳ないのですが、Unity標準のコンポーネントはエディタ拡張されているからではないでしょうか。
RichButtonをCutomEditorを用いて、変数の型通りにInspector上に表示してみると、以下の画像のようになりました。
RichButton.cs
csharp
1using UnityEngine;
2using UnityEditor;
3
4[CustomEditor( typeof( RichButton ) )]
5public class RichButtonEditor : Editor
6{
7 public override void OnInspectorGUI()
8 {
9 // 各変数の型通りに表示する
10 base.OnInspectorGUI();
11 }
12
13} // class RichButtonEditor
比べてみるとわかる通り、単純に変数の型通りにInspectorに表示しても、Buttonコンポーネントの表示と違ってきています。
そのためButtonコンポーネントはエディタが拡張されていることがわかります。
ただ、自分でMonoBehaviourを継承したクラスAをさらに継承したクラスBを作成し、クラスAのみCutomEditorを用いた場合以下のようになりました。
A.cs
csharp
1public class A : MonoBehaviour
2{
3 public int AAA;
4
5} // class A
B.cs
csharp
1public class B : A
2{
3 public int BBB;
4
5} // class B
6
AEditor.cs
csharp
1[CustomEditor( typeof( A ) )]
2public class AEditor : Editor
3{
4 public override void OnInspectorGUI()
5 {
6 var so = serializedObject.FindProperty( "AAA" );
7 so.intValue = EditorGUILayout.IntSlider ( so.name, so.intValue, -100, 100 );
8 serializedObject.ApplyModifiedProperties();
9 }
10
11} // class AEditor
継承元のクラスAのエディタ拡張がなくなって、クラスBの変数が表示されるという状態になり、Buttonの時とは違う挙動になってしまいました。
Unity標準のコンポーネントはエディタの拡張が特殊なのかもしれません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/27 01:45