如何从其他精灵中检索变量?

How to retrieve variable from other sprite?

我在 sprite1 中有一个变量:

var answer = false

我想将这个相同的变量传输到 sprite2 而不必重新定义,并且当 sprite1 中的变量发生变化时,sprite2 中的变量也会发生变化。

假设这两个精灵在某个级别共享一个 parent 节点,您可以在修改 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)

parent 应该引用两个 children。在 ready 中,连接到 sprite1 的信号。现在 parent 将监听更新。每当它收到来自 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