上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

【Unity】出现NullReferenceException:Object reference not set to an instance of an object.的原因总结

guduadmin281月前

目录

  • 1. 物体没有激活
  • 2. 物体的父物体、祖父物体……没有激活
  • 3. 没有挂载脚本
  • 4. 追祖溯源
  • 5. 资源加载失败
  • 6. 变量未赋初值

    1. 物体没有激活

    ①运行前物体没有被激活,导致运行时找不到该物体;

    ②运行时物体被脚本控制取消了激活,导致用到该物体时找不到。

    2. 物体的父物体、祖父物体……没有激活

    Unity中,如果一个物体的父物体没有激活,那么其所有子物体是找不到的。

    类似的,这种情况也会导致运行时找不到物体。

    尤其是使用GameObject.Find()函数全局查找GameObject的时候需要尤其注意。

    3. 没有挂载脚本

    继承于MonoBehaviour的脚本没有挂载到Hierarchy面板上的任何GameObject。

    这种情况下脚本中的Awake(),Start()和Update()脚本就都不会被执行,因此自然找不到需要的物体。

    4. 追祖溯源

    对于没有继承于MonoBehaviour的脚本,需要查看调用该脚本的源头脚本有没有运行(即其被挂载到了Hierarchy面板上的某个物体,且其脚本组件被激活)

    5. 资源加载失败

    脚本中使用到了Resources.Load()函数,然而其所指向的路径中没有对应的东西。

    查看Assets文件夹下的Resources文件夹下是都有对应加载的资源。

    6. 变量未赋初值

    只定义了变量,但没有为其赋初值。

    public Vector3 vec = new Vector3(0,0,0);
    public string[] strs = new string[5];
    int index = 0;
    float ff = 0.0f;
    

    只定义了脚本实例,但没有实例化它。

    如定义了继承于Monobehavior地脚本的一个实例Demo,需要在其Awake时将其实例化,才能在其他地方引用其方法时不报空。

    public class Demo : MonoBehaviour
    {
        public static Demo Instance;
        private void Awake()
        {
            Instance = this;
        }
    

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦见杀羊是什么意思  2020周公解梦大全梦见蛇  周公解梦大全查询梦2345原版视频