问题描述
我在sprite1中有一个变量:
var answer = false
我想将同一变量传输到sprite2,而不必重新定义,并且当sprite1中的变量更改时,sprite2中的变量也可以更改。
解决方法
假设这两个精灵在某个级别上共享一个父节点,那么只要修改了sprite1,就可以使用观察者模式来更新sprite2。
首先,让我们在Sprite1
上设置信号。仅当我们调用update_answer
时才发出信号。这意味着我们必须调用它,而不是直接设置answer
。
如果您熟悉getter和setter,则可以改用setter。否则,此策略会正常工作。
// Sprite1
signal answer_changed(answer)
var answer = false
func update_answer(new_answer):
answer = new_answer
emit_signal("answer_changed",new_answer)
父母应同时提及两个孩子。在ready
中,连接到sprite1
的信号。现在,父级将监听更新。每当收到来自sprite1
的信号时,它将自动update_sprite2
。
// Parent
onready var sprite1 = $Sprite1
onready var sprite2 = $Sprite2
func _ready():
sprite1.connect("answer_changed",self,"update_sprite2")
func update_sprite2(answer):
sprite2.answer = answer