Consider an enabled plugin with the following script:
# res://addons/coloring/swatch_ref.gd
class_name SwatchRef
extends Resource
var swatch_key: String
@export var default_color: Color
@export var use_swatch: bool
@export
func get_color() -> Color:
if use_swatch:
# TODO: Lookup the color using the swatch key
return default_color
else:
return default_color
And in the root of the godot project with that plugin:
# res://test.gd
@toolextends Node3D
var swatch_ref: SwatchRef = SwatchRef.new()
@export
func _process(_delta) -> void:
print(swatch_ref.default_color) # Works
print(swatch_ref.get_color()) # Doesn't work
You will always get the error
res://test.gd:8 - Invalid call. Nonexistent function 'get_color' in base 'Resource (SwatchRef)'.
while in the Editor (it will work in play mode).
This is because SwatchRef
does not
have the @tool
annotation, meaning that
it won't have code that can be run in the editor and
the methods won't be added to the class.
See: