Godot Version
Godot 4.7 dev4
Question
So there is an issue with the export variables.
When object is instantiated, the export variables and setters appear to work in the Editor, but the values in the Inspector don’t change and they go back to default values when running the game.

When changing the %PointToTarget to a $PointToTarget, it breaks further.
@tool
class_name ComponentTargetable
extends Node3D
@export var enabled: bool = true
@export_range(0, 100, 0.001) var to_target_distance: float = 5.0:
set(value):
value = abs(value)
%PointToTarget.radius = value
%PointEndTargetSubtract.radius = value
@export_range(0, 100, 0.001) var end_target_distance: float = 15.0:
set(value):
value = abs(value)
%PointEndTarget.radius = value
@export var visible_debug_target_ranges: bool = true:
set(value):
%PointToTarget.visible = value
%PointEndTarget.visible = value
%PointEndTargetSubtract.visible = value
@onready var point_to_target: CSGCylinder3D = %PointToTarget
@onready var point_end_target: CSGCylinder3D = %PointEndTarget
@onready var point_end_target_subtract: CSGCylinder3D = %PointEndTargetSubtract
@onready var marker_target: Marker3D = %MarkerTarget ## The object whose position the player will be targeting.
var player_in_range: bool = false ## Keeps track of if the player is within targetable range.
func _ready() -> void:
change_target_range(to_target_distance, end_target_distance)
debug_visibility_target_range(visible_debug_target_ranges)
if has_node(".."):
get_parent().add_to_group("targetable")
func change_target_range(new_to_target_range: float, new_end_target_range: float) -> void:
point_to_target.radius = new_to_target_range
point_end_target.radius = new_end_target_range
point_end_target_subtract.radius = new_to_target_range
func debug_visibility_target_range(enable: bool) -> void:
point_to_target.visible = enable
point_end_target.visible = enable
point_end_target_subtract.visible = enable
Is there some way to get this to behave correctly?