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

you are viewing a single comment's thread
view the rest of the comments
[+] 5 points 2 years ago (1 child)
  • [–] 2 points 2 years ago (2 children)

    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?

  • source
  • parent
  • hideshow 4 child comments
  • [+] 3 points 2 years ago (1 child)
  • [–] [S] 3 points 2 years ago (1 child)

    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.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 2 years 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.

  • source
  • parent