Custom Inspector not working with inheritance.

So my script:

[CustomEditor(typeof(RPGObject), true)]
public class ItemInspectorEditor : Editor {

	public override void OnInspectorGUI() {
		base.OnInspectorGUI();
		RPGObject script = (RPGObject) target;
		if(GUILayout.Button("Update functions")) {
			script.availableFunctions = new List<string>();
			script.setAvailableFunctions();
		}
	}
}

RPGObject is the parent class and I have many child classes derived from it. I try to retrieve the methods inside the child class by calling setAvailableFunctions which just adds strings to a list. Instead of it updating the list with the functions from the child class, it just updates the functions from the parent class, RPGObject.

So my question is there anyway to access child classes inside a custom inspector. I can create custom inspector for each child class but that defeats the purpose.

Thanks.

Your issue seems to be related with the retrieval of methods on child classes and not on inspector inheritance. Using reflection, you can do something like:

MethodInfo[] methods = target.GetType ().GetMethods (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

From that, you can save their names on a list, invoke them, etc.

I just ended getting the game object from the target and sending a message to it via the SendMessage function.

[CustomEditor(typeof(RPGObject), true)]
public class RPGObjectInspectorEditor : Editor {

	public override void OnInspectorGUI() {
		base.OnInspectorGUI();
		RPGObject script = (RPGObject) target;
		GameObject go = script.gameObject;
		if(GUILayout.Button("Update functions")) {
			go.SendMessage("setAvailableFunctions");
		}
	}
}

Works perfectly.