Outdated documentation

This documentation page refers to Godot 4.3, and may be outdated or incorrect.
Additionally, this engine version is no longer supported.

Check this page in the stable branch for the latest additions and corrections.

GD0401: The class must derive from Godot.GodotObject or a derived class

Rule ID

GD0401

Category

Usage

Fix is breaking or non-breaking

Breaking - If changing the inheritance chain

Non-breaking - If removing the [GlobalClass] attribute

Enabled by default

Yes

Cause

A type annotated with the [GlobalClass] attribute does not derive from GodotObject.

Rule description

The [GlobalClass] has no effect for types that don't derive from GodotObject. Every global class must ultimately derive from GodotObject so it can be marshalled.

// This type is not registered as a global class because it doesn't derive from GodotObject.
[GlobalClass]
class SomeType { }

// This type is a global class because it derives from Godot.Node
// which ultimately derives from GodotObject.
[GlobalClass]
class MyNode : Node { }

// This type is a global class because it derives from Godot.Resource
// which ultimately derives from GodotObject.
[GlobalClass]
class MyResource : Resource { }

How to fix violations

To fix a violation of this rule, change the type to derive from GodotObject or remove the [GlobalClass] attribute.

When to suppress warnings

Do not suppress a warning from this rule. Adding the [GlobalClass] to a type that doesn't derive from GodotObject is an easy mistake to make and this warning helps users realize that it may result in unexpected errors.


User-contributed notes

Please read the User-contributed notes policy before submitting a comment.