2017-10-29 2 views
0

私はUnityで3年以上プログラミングしてきましたが、私はいつも私のインスペクタ画面を埋める公共変数の問題に悩まされてきました。何時間かインターネットを検索した後、私は多くの詳細なエディタのGUIチュートリアルやデモを見にきましたが、自分のやりたいことをやり遂げる方法を説明したことはありませんでした。ユニティエディタgui、basic logic

例:エディタで有効にすると、プログラマ/アーティストが対話できる新しい変数のリストを開くpublic bool変数を作成したいとします。それを、親オブジェクトが有効になっているときにのみ表示される子オブジェクトを持つ親オブジェクトと考えてください。

最近、私は、エディタが有効になっていてゲームが実行されていないときにのみ実行される機能について聞いてきました。おそらくそれが私の問題を解決する方法です。今、私は答えを探す場所を知らない。

答えて

0

あなたが説明しているのは、Unityで完全にサポートされているカスタムインスペクタです。

良いスタートガイドはここにある:Building a Custom Inspector

そして、私はユニティのチュートリアルを見てきたhere

[CustomEditor(typeof(YourScript))] 
public class YourScriptEditor : Editor 
{ 
private bool AToggle = false; 
private YourScript _evCtrl = null; 
void OnEnable() 
{ 
    _evCtrl = (YourScript)target; 
} 
public override void OnInspectorGUI() 
{ 
    //blablabla 
    GUILayout.BeginHorizontal(); 
    GUILayout.Label("A Features", GUILayout.Width(70)); 
    AToggle = EditorGUILayout.Toggle(AToggle); 
    GUILayout.EndHorizontal(); 
    if (AToggle) 
    { 
     GUILayout.Space(5); 
     GUILayout.BeginHorizontal(); 
     GUILayout.Label("This Var", GUILayout.Width(70)); 
     _evCtrl.ThisVar = EditorGUILayout.TextField(_evCtrl.ThisVar); 
     GUILayout.EndHorizontal(); 
     GUILayout.Space(5); 
     GUILayout.BeginHorizontal(); 
     GUILayout.Label("And This One", GUILayout.Width(70)); 
     _evCtrl.AndThisOne = EditorGUILayout.TextField(_evCtrl.AndThisOne); 
     GUILayout.EndHorizontal(); 
     GUILayout.Space(5); 
     GUILayout.BeginHorizontal(); 
     GUILayout.Label("And This Can Be Slider", GUILayout.Width(70)); 
     _evCtrl.AndThisCanBeSlider = EditorGUILayout.Slider(_evCtrl.AndThisCanBeSlider, 0f, 100f); 
     GUILayout.EndHorizontal(); 
    } 
    //blablabla 
} 
} 
+0

を提供された以下のこの答え、それは私はそれだけで問題の今、求められてきたものカバーシステムに慣れる。どうもありがとう! –