2016-09-20 65 views
1

我剛剛進入編輯器腳本編寫,我仍然掌握了所有的基礎知識。我想知道IntSlider(我們用來創建一個整數值滑塊)是否有可用於獲取更多功能的任何方法或函數?IntSlider回調函數?編輯器腳本

有點像Slider類:
你有-maxValue,-minValue, - 值,-onValueChanged(當滑塊的值更改回調執行)

這些工作中的「播放」模式中。

我需要在編輯器中訪問這些信息。 特別是:我需要訪問IntSlider的onValueChanged(如果存在),所以我可以分配一個函數來執行它。

IntSlider代碼:

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

有沒有辦法實現這一目標的檢查?或者可以創建的東西來解決這個問題?如果你能指引我正確的方向,我會很感激。

enter image description here

我使用Unity 5.3.1f

回答

3

有目前在Unity沒有這樣的事件。但是,這可以很容易實現,如下所示:

在您的實際腳本中添加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

我實現了這一點,它的工作原理!我喜歡這個解決方案。 –