2017-03-27 16 views
3

私は2つの同様のクラスClassAClassBを持っています。クラスAでカスタムインスペクタフィールドの初期値を1に設定する方法

:どちらのクラスには、ブール値が含まれているクラスBでは

[SerializeField] 
private bool _overwrite = true; 

public bool overwrite 
{ 
    get { return _overwrite; } 
    set { _overwrite = value; } 
} 

[SerializeField] 
private bool _hide = true; 

public bool hide 
{ 
    get { return _hide; } 
    set { _hide = value; } 
} 

どちらのスクリプトがCustomEditorスクリプトを持っています。どちらのエディタスクリプトでも、OnInspectorGUI()メソッドの中で次の2行を使用して、それぞれのブールをインスペクタに追加します。私はゲームオブジェクトにClassBのを追加するとき

ClassB.hide = EditorGUILayout.ToggleLeft("Hide", ClassB.hide);


私はゲームオブジェクトににClassAを追加すると、フィールドがチェックされ、「上書き」

ClassA.overwrite = EditorGUILayout.ToggleLeft("Overwrite", ClassA.overwrite);

は、しかし、「非表示」フィールドがチェックされます。

私は、何が違うのか、またはプロパティのデフォルト/初期値の設定に他の要素が関係しているか分かりません。

理想的には、両方ともデフォルトでチェックされるようにします。

アイデアは何か不足している可能性がありますか?お時間を

おかげで、

リアム

答えて

1

MonoBehavioursのReset方法は、それはあなたが探している機能を提供しますようです。

void Reset() 
{ 
    _overwrite = true; 
} 
0

grabObjectとはなんですか?

それはあなたが単にあなたのエディタのスクリプトを変更し、Editorスクリプトのtarget変数を使用してOnEnable方法への参照を発見したコンポーネント変数の場合:

grabObject.overwrite = EditorGUILayout.ToggleLeft("Overwrite", grabObject.overwrite); 

と:

grabObject.hide = EditorGUILayout.ToggleLeft("Hide", grabObject.hide); 

で問題を解決する必要があります。

+0

お詫び!私はコピーして貼り付けるときにそれを逃した。実際のクラスは 'grabObject'と呼ばれます。あなたが上に持っているものは私のプロジェクトで持っているものとほとんど同じです。 –

関連する問題