Plugins are a good way so as to add performance to Godot’s editor with minimal effort. They will let you add options like customized instruments, helpful shortcuts, and menu objects to hurry up your workflow. This text will information you thru the method of making your personal plugins to unlock the complete potential of Godot.
Word: This text assumes you’re aware of Godot’s editor and have a very good understanding of GDScript.
To get began, obtain the challenge supplies through the Obtain Supplies hyperlink on the prime and backside of this web page. Subsequent, open the EditorPlugins challenge you discover within the starter folder and open it in Godot.
Earlier than delving into plugins, I’ll give a fast tour of the challenge. It comes with a single scene named fundamental.tscn and a few sprites. Open the fundamental scene and try the nodes inside.
There’s a set of StaticBody2D and RigidBody2D nodes right here that make up a non-interactive physics scene. For those who direct your consideration to the Scene dock, you’ll see there are all named in response to their operate.
Discover that solely the highest stage nodes will be chosen and moved, whereas their youngsters are locked. That is intentional to keep away from transferring the collision shapes and sprites by themselves by chance.
Now strive operating the challenge by urgent F5 and see what occurs.
Shortly after operating the challenge, you’ll see the little blue avatar falling down on a pink field, whereas the opposite pink field falls off a platform. There’s no precise gameplay concerned right here as the main target is on extending the editor.
Now your manner across the scene, it’s time to study plugins!
In Godot, plugins are scripts that stretch the performance of the editor. You may write these scripts utilizing GDScript or C# and there’s no have to recompile the engine to make them work. Apart from the principle plugin script, you’ll be able to add scenes and further scripts to the plugin to make it much more versatile. These work the identical manner like the remainder of your challenge, which means you should utilize your present information of Godot to increase it!
You need to use plugins so as to add buttons, shortcuts and even entire new screens to the editor. Listed here are some examples of what you are able to do with plugins:
- Create a dialog supervisor
- Combine Google Sheets into your challenge to load information from
- Add customized useful resource importers
- Make your personal node varieties
- Robotically create the best measurement of colliders for sprites
These are only a handful of concepts to present you a style of what you are able to do with plugins. For those who ever thought of a function you’d need in Godot, there’s a very good likelihood you will discover it in a plugin or create your personal.
Creating Your First Plugin
On your first plugin, you’ll add a button to the toolbar that toggles the visibility of a specific node.
Plugins want three issues to work:
Fortunately, Godot makes it straightforward to create new plugins because it’s constructed into the editor. To get began, open the Venture Settings through Venture ▸ Venture Settings… within the prime menu. Now choose the Plugins tab and it is best to see an empty checklist.
- They have to be in a folder named addons within the root of the challenge
- They want a file named plugin.cfg containing the metadata
- They want a minimum of one script that derives from
Now click on the Create New Plugin button and the Create a Plugin dialog window will pop up.
Godot will create the mandatory information for you primarily based on the knowledge you present, fairly neat! For this visibility button plugin, fill within the following data:
- Plugin Identify: Visibility Button
- Subfolder: visibility_button
- Description: Simply present and conceal a specific node.
- Writer: Your title or username
- Script Identify: visibility_button.gd
Right here’s what it ought to appear to be:
Subsequent, click on the Create button to let Godot create the mandatory information for you. This may also mechanically open the visibility_button.gd script within the script editor.
Earlier than modifying the script, check out the information and folders Godot has created for you within the FileSystem dock.
There’s a brand new folder named addons now that accommodates a folder for the plugin named visibility_button. Inside that folder, there’s a file named plugin.cfg and a script named visibility_button.gd. plugin.cfg accommodates the metadata for the plugin, whereas the script accommodates the precise code.
Word: You could be questioning why the addons folder isn’t named plugins as an alternative. In Godot, it’s doable so as to add add-ons that stretch the performance of the editor, however aren’t plugins. Plugins are editor plugins particularly, which use a script that derives from
Sufficient scaffolding, time to try the code!
Taking a Nearer Look
The visibility_button.gd script that Godot generated for you accommodates the next code:
@instrument # 1
extends EditorPlugin # 2
func _enter_tree() -> void: # 3
# Initialization of the plugin goes right here.
func _exit_tree() -> void: # 4
# Clear-up of the plugin goes right here.
I took the freedom so as to add some numbered feedback to make it simpler to clarify what every line does:
@instrumentannotation turns an everyday script right into a instrument script. Which means any code within the script can be executed within the editor. That is highly effective, but it surely additionally makes it straightforward to interrupt complete scenes when not cautious. You’ll be taught extra in regards to the
@instrumentannotation in one other article. If you wish to know extra about it within the meantime, try the Running code in the editor web page of Godot’s documentation.
- All editor plugins should inherit from
EditorPlugin. This class comes with a ton of helpful capabilities to entry and edit Godot’s editor.
_enter_treeoperate is named once you activate the plugin. This the place you arrange all wanted variables and references for later use.
_exit_treeoperate is named once you disable the plugin. That is the place you clear up all references.
Dealing with Node Choice
For the visibility button plugin, you gained’t want the
_exit_tree capabilities so delete them. You’ll be dealing with the initialization and cleanup with different capabilities. Now add the operate beneath within the place of the eliminated ones:
func _handles(object) -> bool:
return object is Node
Godot calls the
_handles operate when you choose an object. The
Object class is the bottom class for all different lessons in Godot. This operate returns
true if the chosen object will be dealt with by your plugin. On this case, the plugin solely edits nodes, so it returns
true if the chosen object is a
Node class, or derives from it.
You’ll have to hold monitor of the chosen node your self, so add a brand new variable above the
_handles operate named
var node_to_edit : Node
With this variable in place, add the
_edit operate beneath the
func _edit(object: Object) -> void: # 1
if !object: # 2
node_to_edit = object # 3
_edit operate is named by Godot proper after the
_handles operate returns
true. It requests the editor to edit the given object and it’s the proper place to retailer a reference to the chosen object. Right here’s an summary of what’s occurring right here:
_editoperate will get handed the chosen object, a
Nodein case of this plugin.
- There’s a chance that the chosen object is null, so it’s essential to examine if it’s not. If it’s null, return from the operate and don’t do something.
- Retailer a reference to the chosen object for later use.
To examine if this code is working accurately, add a brief print assertion on the finish of the
Now save the script and check out choosing some nodes within the scene tree. It’s best to see the title of the chosen node within the console.
As you’ll be able to see, the plugin already works!
Word: When you choose a root node like Important on this case, the console will name
_edit twice. Fortunately, this gained’t have an effect on the performance of the plugin.
Now take away or remark out the print assertion you’ve added and save the script once more. The final operate to carry all of it collectively is the
_make_visible operate, add it beneath the
func _make_visible(seen: bool) -> void: # 1
if seen: # 2
else: # 3
Just like the
_edit operate, Godot calls the
_make_visible operate after the
_handles operate returns
true. It handles the exhibiting and hiding of the plugin UI. It additionally will get known as when disabling the plugin. When exhibiting the button, you’ll create it and add it to the toolbar. When hiding the button, you’ll take away it from the toolbar and destroy it. That is a substitute for utilizing the
_exit_tree capabilities for initialization and cleanup.
Right here’s the code above in additional element:
_make_visibleoperate will get handed a boolean worth,
seento inform the UI to indicate or disguise.
true, add the button to the toolbar through the
false, take away the button from the toolbar through the
After including the code, you’ll get some errors as you haven’t added the
_remove_button capabilities but. Add these empty capabilities to eliminate the errors:
func _add_button() -> void:
func _remove_button() -> void:
These will act as placeholders for now. Within the subsequent part you’ll add the logic.