I am coming from a Unity background and there I just had a component of some custom class in the scene which I could then easily get by calling FindInScene<CustomComponent> or something like that. Not in Godot this doesn’t work, because I didn’t find a way to get the actual class of an attached script. I always just get GDScript as the class name even though I did specify a custom one.

The information I want to save are things like: where to spawn players, how many laps will this race have, maybe save references to the spawned players, etc.

So how would I save this “meta” information to get by another script in Godot?

EDIT: here is an example: I have a main scene which can load different levels. When loading a level I need to get some information about that level, like: the available spawn points. Inside each level I have a node with a script attached to it that defined class_name LevelMeta and holds the meta information that I need when loading the level. How do I detect this script and the associated meta information?

  • BougieBirdie
    link
    fedilink
    English
    arrow-up
    5
    ·
    4 months ago

    You may find some value in Groups. This lets you assign a node to a group by name, then later get the nodes in the group by searching for that name.

    In your specific example you mention being able to fetch the spawn points. I’d add each spawn point to a group called “spawn” and then later retrieve them with:

    var spawn_points = get_tree().get_nodes_in_group("spawn")

      • BougieBirdie
        link
        fedilink
        English
        arrow-up
        4
        ·
        4 months ago

        I find them very handy. I also came to Godot from Unity, and groups almost work identically to Unity’s FindAllInScene()<> method. You just have to do a little setup to give them a string instead of searching for class type, but they behave very similarly.