- Home /
is there a way to change the public inspector details at runtime
im curious if this can be done
public bool useStatic;
public GameObject[] staticOjects;
public GameObject[] nonStaticObjects;
so that if useStatic = true; , then only staticOjects would show in the inspector
and if useStatic = false; , then only nonStaticOjects would show in the inspector
this is a simple version of what i would like to be able to do
Answer by termway · Jul 31, 2012 at 05:00 PM
You can write your own custom inspector and manage visibility in OnInspectorGUI function. http://docs.unity3d.com/Documentation/ScriptReference/Editor.html
Somethings like this :
[CustomEditor(typeof(YourMonoBehaviourObject))]
public class YourMonoBehaviourObjectEditor : Editor
{
private bool visible = true;
protected SerializedProperty useStatic;
public void OnEnable()
{
useStatic = serializedObject.FindProperty("useStatic");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
if (useStatic.boolValue)
DisplayArray("staticOjects", ref visible);
else
DisplayArray("nonStaticOjects", ref visible);
if (GUI.changed) EditorUtility.SetDirty(target);
serializedObject.ApplyModifiedProperties();
}
private void DisplayArray(string propertyPath, ref bool visible)
{
SerializedProperty listProperty = serializedObject.FindProperty(propertyPath);
visible = EditorGUILayout.Foldout(visible, listProperty.name);
if (visible)
{
EditorGUI.indentLevel++;
for (int i = 0; i < listProperty.arraySize; i++)
{
SerializedProperty elementProperty = listProperty.GetArrayElementAtIndex(i);
Rect drawZone = GUILayoutUtility.GetRect(0f, 16f);
bool showChildren = EditorGUI.PropertyField(drawZone, elementProperty);
}
EditorGUI.indentLevel--;
}
}
}
Your answer
Follow this Question
Related Questions
Public "char" parameter not showing on inspector? 2 Answers
Cannot assign Public GameObject variable in Inspector... 2 Answers
How to display a message while editor is blocked? 1 Answer
Set number of public objects through the inspector 1 Answer
Use via Inspector to script assigned public texture as default 0 Answers