- Home /
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.
Answer by Rhithik · Jul 23, 2014 at 09:18 PM
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.
Answer by frarees · Jul 23, 2014 at 10:42 AM
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.
Your answer
Follow this Question
Related Questions
An OS design issue: File types associated with their appropriate programs 1 Answer
CustomEditor for a list of polymorphic items 2 Answers
How to make a Custom inspector? 2 Answers
Using custom property drawers with polymorphism 3 Answers
CustomScroll inherited from RectScroll, executing in edit mode 0 Answers