Godot Version
v4.4.1
Question
Can someone help explain to me how deleting elements from arrays is done properly.
I’ve got this very simple setup with 10 labels in an array, and a button which manually deletes the 5th element, however, it’s deleting the 7th element for some reason, this happens every time repeatedly.
Swapping around labels.remove_at(5)
and labels[5].queue_free()
removes the 6th element in the array (or Label 5).
So either way, still not the intended removal of element 5 (Label 4)
Screenshot here:
Here’s my code:
extends Control
# Nodes
@onready var array_size_label: Label = $ArraySizeLabel
@onready var delete_element_button: Button = $DeleteElementButton
@onready var labels_container: Control = $Labels
# Variables
var labels: Array[Label]
# Ready function
func _ready() -> void:
# Add labels
for loop: int in 10:
var new_label: Label = Label.new()
new_label.position.y = loop * 30
new_label.text = str("Label: ", loop)
labels_container.add_child(new_label)
labels.append(new_label)
# Delete Button
delete_element_button.pressed.connect(func() -> void:
labels.remove_at(5)
labels[5].queue_free()
print(str("Deleted item: ", labels[5]))
)
# Process function
func _process(delta: float) -> void:
array_size_label.text = str("Array Size: ", labels.size())