2016-09-20 2 views
1

私はちょうど最近エディタスクリプトに入りました。そして、私はまだすべての基本を保持しています。 IntSlider(整数値のスライダを作成するために使用するIntSlider)が、より多くの機能を使用するために使用できるメソッドや関数を持っているかどうかを知りたかったのですが? SliderクラスのようなIntSliderコールバック関数?エディタスクリプト

何か:
あなた-maxValue、-minValue、-value、-onValueChanged(スライダーの値が変更されたときにコールバックが実行される)持っている "再生" モード時

これらの作品。

私はこの情報にエディタでアクセスする必要があります。 具体的には、実行する関数を割り当てるために、IntSliderのonValueChanged(存在する場合)にアクセスする必要があります。

IntSliderコード:

totalRooms = EditorGUILayout.IntSlider(new GUIContent ("Total Rooms"), totalRooms, 0, 10);

インスペクタのためにこれを達成するための方法はありますか?これを解決するために創造できるものか?あなたが正しい方向に私を指すことができれば、私は感謝するでしょう。

enter image description here

私は、現時点ではユニティには、このようなイベントはありません

答えて

3

5.3.1fユニティを使用しています。しかし、これは簡単に次のように実装できます。

実際のスクリプトにUnityEventを追加します。

public UnityEvent OnVariablesValueChanged; 

次に、値が変更されているかどうかを確認します。 (注:私はこれを簡単に理解できるコードサンプルを書き込もうとしました、あなたがそれに応じて変更することができます。)

[CustomEditor(typeof(MyScript))] 
public class MyScriptEditor : Editor 
{ 
    public override void OnInspectorGUI() 
    { 
     MyScript myTarget = (MyScript)target; 
     int prevValue = myTarget.variable; 
     myTarget.variable = EditorGUI.IntSlider(new Rect(0,0,100, 20), prevValue, 1, 10); 
     int newValue = myTarget.variable; 
     if (prevValue != newValue) 
     { 
      Debug.Log("New value of variable is :" + myTarget.variable); 
      myTarget.OnVariablesValueChanged.Invoke(); 
     } 
     base.OnInspectorGUI(); 
    } 
} 

を次にインスペクタからOnVariablesValueChangedイベントにリスナーを追加します。

は、この情報がお役に立てば幸いです。

+1

賢い解決策! – Programmer

+1

私はこれを実装し、それは動作します!私はこの解決策が大好きです。 –