Hi, I have a simple class written in GDScript with one method, stored in a file called SomeClass.gd
Now I want to create an instance of this and save it on the drive as a PackedScene. Later, I want to load the PackedScene in an editor script (plugin), instance it and call the
aaa() method. However, I'm getting errors when I do this. I've created this editor script to reproduce the issue.
func _run() -> void:
# create our node and call aaa to make sure it works
var node = SomeClass.new();
node.aaa(); # works
# pack the node into a packedscene
var pck = PackedScene.new();
if(pck.pack(node) != OK):
# (at this point in my original script i would save this to the drive and later use it like this)
# instance our node
var instance = pck.instance();
(instance is SomeClass) && # double check that it's still SomeClass
(instance.has_method("aaa")) # and that it has the "aaa" method
instance.call_deferred("aaa"); # gives Error calling deferred method: 'Node(SomeClass.gd)::aaa': Method not found..
instance.aaa(); # gives Invalid call. Nonexistent function 'aaa' in base 'Node (SomeClass.gd)'.
When run, it produces two errors relating to a method not being found or being nonexistent. However, it seems like this should work because
instance is of type
SomeClass and has method
aaa. Why does this fail? How can I make this work? I should also mention that this works completely if it's run ingame and not as an editor script, however I need it to work inside of the editor.