Godot:标签为 "actively" 当(不)为空时触发信号

Godot: Label to "actively" fire Signal when (not) empty

当标签中没有文本(最后一个剩余字符刚刚被擦除并且标签为空)并且第一个字符被写入空标签时,我如何让我的标签触发信号(所以它不再是空的了)?

当我“主动”寻找实际状态时,if text.empty():if not text.empty(): 都可以工作,比如说,通过按下连接的按钮,但我不知道如何制作标签当改变到所述状态时,它自己会“主动”发出这样的信号。这怎么可能?

好吧,kleonc 通过 reddit 告诉我这个(感谢一百万!):

您可以在标签脚本中创建自己的信号。您可以覆盖 _set 方法,您可以在其中检查文本 属性 是否正在更改并根据新值执行某些操作。这样的事情应该有效:

extends Label

signal textChanged(newText)

func _set(property, value):
    match property:
        "text":
            if text != value:
                text = value
                emit_signal("textChanged", value)
                return true
    return false

然后您可以将一些方法连接到该信号:

    # ...
    yourLabel.connect("textChanged", self, "onLabelTextChanged")
    # ...

func onLabelTextChanged(newText):
    yourEraseButton.disabled = newText.empty()