# Scene with an OptionButton to select the resolution from a list of options extends OptionButton var focused_now # Emitted when the selected resolution changes. signal resolution_changed(new_resolution) func _update_selected_item(text: String) -> void: # The resolution options are written in the form "XRESxYRES". # Using `split_floats` we get an array with both values as floats. var values := text.split_floats("x") # Emit a signal for informing the newly selected resolution emit_signal("resolution_changed", Vector2(values[0], values[1])) func _on_OptionButton_item_selected(_index: int) -> void: _update_selected_item(self.text) func _on_OptionButton_item_focused(index): focused_now = index func _on_OptionButton_gui_input(event): if event.is_action("ui_accept") and focused_now != null: _on_OptionButton_item_selected(focused_now)