My script sets this value in editor. How can I keep the the changes when saving the scene?

class Anchor:
	var offset: Vector3
	var connected: Node3D
	var end: bool

var anchors: Array[Anchor]

I found this issue, so I tried fiddling with _get_property_list(), but that didn't work. It also doesn't seem that I can export the var.

Thanks

  • I Cast Fist@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    Had to look up how to do that, as apparently the docs don't have that kind of information. I did come across this SO question. So, the solution would be:

    #anchor.gd
    class_name Anchor
    
    var offset: Vector3
    var connected: Node3D
    var end: bool
    

    And that would create this new, readily accessible class throughout the project, correct?

      • Bezier@suppo.fiOP
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        Thanks for that link, I now have learned why it didn't originally work (and that other features like reference counting aren't employed by default!).

        The solution, if anyone needs this in the future:

        # Separate file
        extends Resource
        class_name Anchor
        
        @export var offset: Vector3
        @export var connected: Node3D
        @export var end: bool
        

        It adds namespace pollution, but I'll deal with it by prefixing it with the original script's class.

        • Silicon Dryad@eldritch.cafe
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          @Bezier yeah it's good to know about the differences between Object and RefCounted when you're making custom data containers.

          Personally, I've been suffixing my custom/"game object" resources with "-Rs", as in I have PlayerRs, FileRs, DownloadRs, etc.

          The namespace pollution is definitely part of the trade-off from just preloading wherever you need the class.