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

You can write your own custom inspector and manage visibility in OnInspectorGUI function.

Somethings like this :

public class YourMonoBehaviourObjectEditor : Editor
    private bool visible = true;
    protected SerializedProperty useStatic;

    public void OnEnable()
        useStatic = serializedObject.FindProperty("useStatic");

    public override void OnInspectorGUI()

        if (useStatic.boolValue)
            DisplayArray("staticOjects", ref visible);
            DisplayArray("nonStaticOjects", ref visible);

        if (GUI.changed) EditorUtility.SetDirty(target);

    private void DisplayArray(string propertyPath, ref bool visible)
        SerializedProperty listProperty = serializedObject.FindProperty(propertyPath);
        visible = EditorGUILayout.Foldout(visible,;
        if (visible)
            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);