Скрыть/показать переменные в инспекторе с помощью перечисления

В настоящее время я работаю над более крупным проектом с некоторыми художниками, программистами, дизайнерами уровней, арт-директорами и т. д. Теперь художники и дизайнеры уровней не так увлечены кодом, поэтому они очень зависят от переменных, отображаемых в инспекторе, и я хочу максимально упростить их использование.

Итак, в инспекторе игрового объекта я хочу, чтобы некоторые переменные отображались в зависимости от значения общедоступной переменной перечисления. Есть ли способ сделать это с помощью макросов и [HideInInspector] или другого?

Кстати, мы используем C#.


person Kent Kostelac    schedule 13.11.2014    source источник


Ответы (1)


Для этого вам потребуется создать пользовательский редактор.

Например, создавайте ползунок только в том случае, если установлен флаг:

public class MyScript : MonoBehaviour
{
   public bool flag;
   public int i = 1;
}

[CustomEditor(typeof(MyScript))]
public class MyScriptEditor : Editor
{
   void OnInspectorGUI()
   {
       var myScript = target as MyScript;

       myScript.flag = GUILayout.Toggle(myScript.flag, "Flag");

       if(myScript.flag)
           myScript.i = EditorGUILayout.IntSlider("I field:", myScript.i , 1 , 100);

   }  
}

Код взят из того же вопроса:
http://answers.unity3d.com/questions/192895/hideshow-properties-dynamically-in-spector.html

person Ricardo Reiter    schedule 13.11.2014