您只能避免使用同一类的 setter(不使用self)。因此,您可以创建第二种方法来设置变量,然后在外部使用第二种方法。
tool
extends Node2D
export(int) var example=0 setget set_example
func set_example(val):
print("Here!")
example=val
func set_example_alt(val):
example=val # The setter is not triggered here
笔记:Godot 4 beta 中的等效方法不起作用。
如果它必须是一个属性,那么您可以有两个属性使用相同的支持变量:
tool
extends Node2D
export(int) var example=0 setget set_example
export(int) var example_alt=0 setget set_example_alt, get_example_alt
func set_example(val):
print("Here!")
example=val
func get_example_alt():
return example
func set_example_alt(val):
example=val
这里没有使用变量example_alt。相反,当另一个脚本(或编辑器)使用example_alt 时,它将获取和设置example,但不会触发设置器。
我看到你有一个相关的问题:Avoid invoking setget function on starting up。我将在那里进一步扩展。