Makes it easier to add custom inspector controls to nodes.
Download the project and copy the addon folder into your godot project.
Go to Project Settings > Plugins, and enable Extendable Inspector (C#).
Let's add a button that prints the node name in godot's output:
- Choose the node that should have this control, make sure its script has the
[Tool]
attribute at the class declaration, this allows it to run code while in the editor.
- Define a method called
ExtendInspectorBegin
that receives a parameter, let's call that parameterinspector
. Don't forget to wrap code with preprocessor#if
directive, becauseExtendableInspector
is only accessible in editor. If you want, you can type it asExtendableInspector
to get some autocomplete features:
- Create a button that when pressed, it prints the node's name. Then, simply add it to the inspector with
inspector.AddCustomControl(ourNewControl)
. You will have to unfocus the node and focus it again for the button to appear:
Here's the entire code in case you want to try it out:
using Godot;
[Tool]
public partial class SayYourName : Node2D {
#if TOOLS
public void ExtendInspectorBegin(ExtendableInspector inspector) {
Button button = new() {
Text = "Say your name"
};
button.Pressed += () => GD.Print(Name);
inspector.AddCustomControl(button);
}
#endif
}
What this plugin does is allow extending the inspector by declaring some methods in the script for which you want to add custom extensions to the inspector.
The supported methods are analogous to methods that can be defined in an EditorInspectorPlugin
to add new features to the inspector.
https://docs.godotengine.org/en/latest/classes/class_editorinspectorplugin.html#class-editorinspectorplugin-method-add-property-editor-for-multiple-properties
These methods are:
void ExtendInspectorBegin(ExtendableInspector inspector)
Allows adding controls at the beginning of the inspector.
void ExtendInspectorEnd(ExtendableInspector inspector)
Allows adding controls at the end of the inspector.
void ExtendInspectorGroup(inspector: ExtendableInspector, string group)
Allows adding controls at the beginning of a group in the property list for object.
void ExtendInspectorCategory(inspector: ExtendableInspector, string category)
Allows adding controls at the beginning of a category in the property list for object.
bool ExtendInspectorProperty(ExtendableInspector inspector, Variant.Type type, string name, PropertyHint hintType, string hintString, PropertyUsageFlags usageFlags, bool wide)
Allows adding property-specific editors to the property list for object. The added editor control must extend EditorProperty
. Returning true
removes the built-in editor for this property, otherwise allows to insert a custom editor before the built-in one.
Examples can be found in the example folder