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

Unity中为System.Serializable类数组赋值触发空引用异常问题求助

问题原因
  • _answersData是引用类型(类),当你执行gameplayScript.answersData = new _answersData[answersCount];时,仅完成了数组的空间分配,数组内的每一个_answersData元素默认值都为null,没有对应的实例对象。
  • 直接访问gameplayScript.answersData[i].word相当于读取空对象的属性,因此触发空引用异常。
修复方法

在循环内给每个数组索引位置先实例化_answersData对象,再对属性赋值,修改后的populate方法参考如下:

void populate()
{
    answersCount = int.Parse(snapshot.Child("Answers").Child("Count").Value.ToString());
    gameplayScript.answersData = new _answersData[answersCount];

    for (int i = 0; i < answersCount; i++)
    {
        // 新增:实例化当前索引对应的_answersData对象
        gameplayScript.answersData[i] = new _answersData();
        
        string positionNode = "Answer" + (i + 1).ToString();
        string _word = snapshot.Child("Answers").Child(positionNode).Child("Word").Value.ToString();
        gameplayScript.answersData[i].word = _word;   
    }
}
额外排查点

如果修改后仍存在空引用异常,可以依次检查:

  • gameObject.GetComponent<gamePlay>()是否成功获取到组件,确认当前挂载challengeScript的物体上同时挂载了gamePlay组件
  • snapshot对象以及对应的子节点是否存在,避免节点读取为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:51:02