Skip to content

Instantly share code, notes, and snippets.

@apples
Created April 19, 2025 14:53
Show Gist options
  • Save apples/842973199b49bb8e47e117e6c5834e2d to your computer and use it in GitHub Desktop.
Save apples/842973199b49bb8e47e117e6c5834e2d to your computer and use it in GitHub Desktop.
Godot implementation of Unity ScriptableObject pattern for observable values.
class_name IntObserver
extends Node
signal value_changed(value: int)
@export var observable: ObservableInt:
set(v):
if observable:
observable.changed.disconnect(_emit)
observable = v
if observable:
observable.changed.connect(_emit)
_emit()
func _ready() -> void:
if observable:
_emit()
func _emit() -> void:
value_changed.emit(observable.value)
class_name ObservableInt
extends Resource
@export var value: int:
set(v):
value = v
emit_changed()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment