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.