In-game console for Godot, which could be easily extended with new commands.
-
Creating custom commands with add_command.
-
Autocomplete with
TAB
keyboard key. -
Writing to console using write and write_line methods. You can also use BB codes.
(Is also printed to engine output)
-
Session command history (using
UP
andDOWN
keyboard arrows).- Change the number of stored commands in the history. (Change in
Console.gd
line 30 the current NUMBER to an positive integer value)29: var History = preload('Misc/History.gd').new(NUMBER) setget _set_readonly
- Change the number of stored commands in the history. (Change in
-
FuncRef support with Godot >=3.2 (can be used as a command target).
- Open AssetLib.
- Search for Console, category is Scripts; Open it and click Download and then Install.
- Click install. Package installer will copy filestructure as-is so you will have this directories in your project:
addons/quentincaffeino/*
. - Open
Project > Project Settings > Plugins
, search forquentincaffeino-console
and check the Enable checkbox. - You can activate the console with CTRL + ` while running your game (can be changed, see
quentincaffeino_console_toggle
action).
- Clone this project or download latest release.
- Copy
./addons/quentincaffeino
into your projectsaddons
folder.
So you will have this structure:
res://
├── addons
│ ├── quentincaffeino
│ ├── ...
- Open
Project > Project Settings > Plugins
, search forquentincaffeino-console
and check the Enable checkbox. - You can activate the console with CTRL + ` while running your game (can be changed, see
quentincaffeino_console_toggle
action).
Usage we will get:
$ sayHello "Adam Smith"
Hello Adam Smith!
# Function that will be called by our command
func print_hello(name = ''):
Console.write_line('Hello ' + name + '!')
func _ready():
# Registering command
# 1. argument is command name
# 2. arg. is target (target could be a funcref)
# 3. arg. is target name (name is not required if it is the same as first arg or target is a funcref)
Console.add_command('sayHello', self, 'print_hello')\
.set_description('Prints "Hello %name%!"')\
.add_argument('name', TYPE_STRING)\
.register()
// Function that will be called by our command
public string PrintHello(string name = null) {
GD.Print("Hello " + name + "!");
return "test";
}
public override void _Ready()
{
// Registering command
// 1. argument is command name
// 2. arg. is target (target could be a funcref)
// 3. arg. is target name (name is not required if it is the same as first arg or target is a funcref)
(((GetNode("/root/Console").Call("add_command", "sayHello", this, "PrintHello") as Godot.Object)
.Call("set_description", "prints \"hello %name%!\"") as Godot.Object)
.Call("add_argument", "name", Variant.Type.String) as Godot.Object)
.Call("register");
}
- Instead of enabling the
Console
checkbox from the addon tab you will want to enableCSharpConsole
via the plugin checkbox - See the example below for how to use once plugin is enabled
Example:
public override void _Ready()
{
_wrapper = GetTree().Root.GetNode<Console>("CSharpConsole");
_wrapper.AddCommand("sayHello", this, nameof(PrintHello))
.SetDescription("prints \"hello %name%!\"")
.AddArgument("name", Variant.Type.String)
.Register();
}
public void PrintHello(string name = null) {
GD.Print($"Hello {name}!");
}
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Licensed under the MIT license, see LICENSE.md
for more information.