Godot中节点路径赋值变量为null?调用play遇空实例错误
问题:AnimatedSprite2D调用play时报空实例错误
我实现了一个从列表中随机选取鱼类的函数,AnimatedSprite2D节点的动画名称与列表中的鱼类名称一一对应,但运行时出现错误:Attempt to call function 'play' in base 'null instance' on a null instance.
我知道需要补充更多信息来定位问题,想问问还需提供哪些内容?
我的代码
extends Node2D var rng = RandomNumberGenerator.new() func weighted_rng(array, weights): var number = rng.randi_range(0, 100) for weight in weights: if weight > number: return array[weights.find(weight, 0)] @onready var bobber = $/Angler/Rod/Bobber @onready var fish_sprite = $/Angler/Rod/CaughtFish/AnimatedSprite2D var fishing_pool = ["Tuna", "Clownfish", "Flounder"] var caught_fish func _ready(): pass func fish(): caught_fish = fishing_pool[rng.randi_range(0, len(fishing_pool)-1)] fish_sprite.play(caught_fish)
节点树结构
节点树层级为:Angler → Rod → CaughtFish → AnimatedSprite2D(对应代码中fish_sprite的路径)
建议补充的信息
fish()函数的调用时机:是否在节点_ready()生命周期之前就被调用?(@onready变量要到节点就绪后才会初始化)- 节点路径的准确性:检查
$/Angler/Rod/CaughtFish/AnimatedSprite2D路径是否完全匹配实际节点树,包括节点名称的大小写、层级关系 - 节点状态:运行时
CaughtFish或AnimatedSprite2D节点是否被禁用、隐藏或删除 - 动画配置:确认
AnimatedSprite2D的动画列表中,是否存在与fishing_pool中完全同名(大小写一致)的动画
内容的提问来源于stack exchange,提问作者Owen Uhl
相关产品推荐
相关产品推荐

