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.

  1. // This type is not registered as a global class because it doesn't derive from GodotObject.
  2. [GlobalClass]
  3. class SomeType { }
  4. // This type is a global class because it derives from Godot.Node
  5. // which ultimately derives from GodotObject.
  6. [GlobalClass]
  7. class MyNode : Node { }
  8. // This type is a global class because it derives from Godot.Resource
  9. // which ultimately derives from GodotObject.
  10. [GlobalClass]
  11. 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.

Previous Next