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
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--;
}
}
}