You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot角色切换系统中数组引用返回<Object#null>问题求助

解决Godot角色切换系统中数组节点引用为null的问题

核心问题原因

变量初始化阶段直接使用$节点路径获取子节点时,Godot的节点树还未完全加载完成,导致无法正确获取节点引用,返回<Object#null>。

解决方案

1. 延后数组初始化到_ready()函数

将数组的初始化逻辑移至_ready()中,此时节点树已完全构建,能正确获取子节点:

var Chars: Array[Node2D] = []
var charnum = 0
var transitioning = false
var CurChar: Node2D

func _ready() -> void:
    # 此时节点树已加载完成,可正确获取子节点
    Chars = [$Papery, $Erasey, $Pencily]
    # 初始化默认激活角色
    CurChar = Chars[charnum]

2. 验证节点路径正确性

确保$Papery、$Erasey、$Pencily是当前脚本所在节点的直接子节点。如果节点是嵌套结构,需使用完整路径(比如$CharacterGroup/Papery),可在编辑器中右键节点选择「复制节点路径」来获取准确路径。

3. 修复无效的await逻辑

原代码中的await $Camera2D.global_position - CurChar.global_position < Vector2(5,5)无法触发等待,因为await需要监听信号或协程完成。推荐两种优化方式:

方式一:使用Tween实现平滑相机移动(推荐)

func _input(event: InputEvent) -> void:
    if event.is_action_pressed("q") and not transitioning:
        transitioning = true
        # 用取模简化循环切换逻辑,无需判断边界
        charnum = (charnum + 1) % Chars.size()
        CurChar = Chars[charnum]
        
        # 创建Tween实现平滑移动
        var tween = create_tween()
        tween.set_trans(Tween.TRANS_QUAD)
        tween.tween_property($Camera2D, "global_position", CurChar.global_position, 0.3)
        # 等待移动完成
        await tween.finished
        transitioning = false

方式二:循环检测相机距离

func _input(event: InputEvent) -> void:
    if event.is_action_pressed("q") and not transitioning:
        transitioning = true
        charnum = (charnum + 1) % Chars.size()
        CurChar = Chars[charnum]
        
        # 循环检测相机与目标角色的距离
        while $Camera2D.global_position.distance_to(CurChar.global_position) > 5:
            # 等待下一帧再检测
            await get_tree().process_frame
        transitioning = false

4. 调试验证

在_ready()中添加打印逻辑,确认节点引用是否正确:

func _ready() -> void:
    Chars = [$Papery, $Erasey, $Pencily]
    for index, char in Chars:
        if char == null:
            print("警告:索引 %d 的角色节点为null,请检查路径" % index)
        else:
            print("成功获取角色节点:%s" % char.name)

内容的提问来源于stack exchange,提问作者Miles Muehlbach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:51:10