
R
Publisher
ryu-lidu
gd-gen
Tools
Auto-generate C++ code for Godot, like Unreal Engine 5 (UE5) does — but for Godot.
🧩 Macro Reference
🔷 GCLASS(...)
Registers a class with Godot.
Modifiers:
Resource— Forces the class to be treated as aResource(useful if detection fails — report as a bug if needed).CustomBindings— Enables acustom_bind_methods()function for manual binding access.Virtual— Marks the class as virtual; it won't be instantiable from scripts or the editor.Abstract— Prevents direct instantiation of the class entirely, including in C++ (must be subclassed).Runtime— Registers the class only at runtime; it won't be exposed to the editor or serialized.Internal— Hides the class from the editor and scripting APIs; useful for engine-only or implementation-detail types.
🔶 GPROPERTY(...)
Registers a property inside the class.
Modifiers:
Required— Displays a warning if the property is unset in the inspector.NoStorage— Prevents the property from being serialized.HideInInspector— Hides the property from the inspector.MultilineText— Shows the property as a multiline text box.ShowIf(condition)— Only shows the property if the given condition evaluates to true.Getter(getter)— Uses the specified method name as the property's getter.Setter(setter)— Uses the specified method name as the property's setter.Range(min, max, step)- Same as hint range, step is optional. Available for both floats and ints
⚠️ Note: The methods used in
GetterandSettermust be registered usingGFUNCTION(...), or manually bound usingClassDB::bind_method, otherwise the property binding will not work.
🟡 GENUM()
Registers an enum.
If you're using an enum inside a GPROPERTY(), make sure to register it first with GENUM().
🟢 GFUNCTION()
Exposes a function to Godot (just like ClassDB::bind_method).
🔴 GSIGNAL(...)
Registers a signal.
Example:
GSIGNAL(health_changed(int value, float percent))
Automatically generates:
emit_health_changed(...)
connect_health_changed(Callable callable)