Godot寻址/访问实例对象

Godot addressing/ accessing instanced objects

我正在用 Godot 制作一款 2D 平台游戏, 我使用代码创建一个对象:

if currentPlayers < playerLimit:
    var person = humanScene.instance()
    add_child(person)
    person.position = Vector2(90, 300)
    currentPlayers += 1
    print(person.position)

这很好用,但是在“_physics_process(delta):”函数中,如果我尝试这样做:

    "print(person.position)"

它说:

“无效的获取索引 'position'(基于:'null instance')”

无论我尝试什么,我的代码似乎都无法找到实例化对象来找到它的位置(我需要每一帧的位置)。 有没有特殊的方法来访问实例对象数据(例如它们的位置?)提前谢谢!

这是 scope 的问题。变量 person 仅在 if 中定义,在 _physics_process 中不可用。

您需要先在有限范围外定义变量,然后在 if 内设置它的值。例如:

var person = null


func some_function_where_this_happens():
    if currentPlayers < playerLimit:
        person = humanScene.instance()
        add_child(person)
        person.position = Vector2(90, 300)
        currentPlayers += 1
        print(person.position)


func _physics_process(delta):
    print(person.position)

由于您的意图似乎是支持多个玩家,因此您可能希望将 var person = null 部分切换为包含所有玩家的数组。