Godot寻址/访问实例对象



我正在制作《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'无效(base: 'null instance')">

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

这是一个范围问题。变量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部分切换为包含所有播放器的数组。

相关内容

  • 没有找到相关文章

最新更新