0

对为什么此代码不起作用有任何见解吗?

当我右键单击时,游戏崩溃并给出错误:“无效调用。基础'Array'中不存在函数'play'”。

   func _ready():
       anim_Play = get_tree().get_nodes_in_group("AnimationPlayer")
   func_input(event):
      if Input.is_action_pressed("aim"):
        anim_Play.play("AimSights")
4

2 回答 2

0

我从您的代码中猜想您正在尝试获取对AnimationPlayer节点的引用,但它失败了,而您得到了一个 Array。

发生这种情况是因为您使用的是get_nodes_in_group(返回组中的节点数组),而不是get_node返回节点的 。

无效调用。基本“数组”中不存在函数“播放”

意味着您正在尝试play从不存在的 Array 对象调用方法(在 AnimationPlayer 中找到)。

你会AnimationPlayer喜欢

var anim_Play = get_node("./path/to/your/AnimationPlayer")
于 2019-10-22T11:38:12.723 回答
0

回复您的问题

get_nodes_in_group(group)返回一个同时在 the和 groupArray中的节点。SceneTreegroup

假设“AnimationPlayer”组中有一个 AnimationPlayer 节点。我们会像这样获取它:

var anim_player = get_tree().get_nodes_in_group("AnimationPlayer")[0]

注意[0]. 这称为访问器。我们在 element 访问数组0。现在,我们可以调用 play:

anim_player.play("AimSights")

请注意:访问数组中不存在的元素是错误的。

推荐

这似乎是对组的不当使用。如果动画播放器与脚本位于同一场景中,我建议您使用节点路径,如 svarog 建议的那样。

此外,这将有助于阅读或搜索一些基本的编程概念:特别是对象和数组。

最后,阅读 Godot 文档中的场景和节点页面:https ://docs.godotengine.org/en/3.1/getting_started/step_by_step/scenes_and_nodes.html

Godot 文档的整个入门指南是学习 Godot 的宝贵资源。它将对您有很大帮助,而且阅读时间不会太长。

祝你好运!

于 2019-10-25T06:10:21.140 回答