Unity中Dictionary<Vector3, GameObject>空引用异常求助
解决“对象未实例化”异常:Dictionary成员变量未初始化问题
问题核心原因很明确:你在类中声明的私有Dictionary<Vector3, GameObject> wallPositions是成员变量,但在Start()方法里又重新定义了一个同名局部变量,这直接导致成员变量从未被初始化——你在Start里做的初始化操作只作用于那个局部的Dictionary,而类的成员变量始终是null。
当你后续遍历HalfMaze的子物体,尝试给wallPositions赋值时,操作的是未初始化的成员变量(null),自然会抛出“对象未实例化”异常,这和grandchild.gameObject是否为空完全无关。
修复方案
删掉Start()方法里的Dictionary<Vector3, GameObject>类型声明,直接初始化类的成员变量:
// 类的成员变量声明 private Dictionary<Vector3, GameObject> wallPositions; void Start() { // 直接初始化成员变量,不要重新定义局部变量 wallPositions = new Dictionary<Vector3, GameObject>(); // 后续遍历HalfMaze子物体并赋值的代码... }
这样后续操作的就是已完成实例化的成员变量,不会再触发空引用异常。
内容的提问来源于stack exchange,提问作者codingcultivator445
相关产品推荐
相关产品推荐

