首页 > 软件开发 > 编程语言 >

常用解决办法NullReferenceException:Object

来源:互联网 2023-03-17 00:27:41 408

本文介绍一些常见的导致NullReferenceException: Object reference not set to an instance of an object错误出现的原因,并给出相应的解决办法82r办公区 - 实用经验教程分享!

方法/步骤

  • 1

    常用解决办法1:NullReferenceException: Object reference not set to an instance of an object.没有初始化物体的原因最主要的一个就是:物体本身的活性没有激活(√被去掉了).你首先要查看,GameObject的活性是否在运行前就没有激活,还是程序运行时你的某些脚本导致程序运行时将它的活性取消了,激活活性此问题迎刃而解.第一张图为简单的场景搭建,便于讲解.82r办公区 - 实用经验教程分享!

    常用解决办法NullReferenceException:Object82r办公区 - 实用经验教程分享!

    常用解决办法NullReferenceException:Object82r办公区 - 实用经验教程分享!

  • 2

    常用解决办法2:出现问题的物体的父物体、父父物体、父父父物体......没有激活活性,因为一个父物体的活性取消的话,unity系统默认的就无法搜索到他的所有自物体了,即使这个时候你单独打开自物体的属性面板,发现子物体的活性小勾√还在,这个自物体依然是Object reference not set to an instance of an object.82r办公区 - 实用经验教程分享!

    常用解决办法NullReferenceException:Object82r办公区 - 实用经验教程分享!

    常用解决办法NullReferenceException:Object82r办公区 - 实用经验教程分享!

  • 3

    常用解决办法3:如果带有Start(),Awake(),Update (),函数的脚本没有赋给Hierarchy面板上的任何GameObject,那这三个函数的函数体全部不会被执行,自然也就会导致这个问题了.脚本在Project面板中建立后,如果你以为系统会自动执行它,你就大错特错了,必须要把它放到Hierarchy面板上才行.有两种方法1.给一个已有的GameObject添加组件,即Add Component-"脚本的名字".2.新建一个空的GameObject,在空物体上添加组件,方法同上82r办公区 - 实用经验教程分享!

    常用解决办法NullReferenceException:Object82r办公区 - 实用经验教程分享!

  • 4

    常用解决办法4:在大一点的工程中,你会发现,一个工程中的绝大多数脚本是没有Start(),Awake(),Update ()函数的,这些脚本或是也赋值给Hierarchy面板上的物体(这只占很少的一部分),或通过被其他脚本调用来实现作用(占了绝大多数!!),如果这些脚本中出现Object reference not set to an instance of an object,你就要去看看源头了,看看调用的脚本有没有运行(也就是有没有被放到Hierarchy面板上的某个物体上,而且这个脚本组件的活性√是否还在)82r办公区 - 实用经验教程分享!

  • 4此文章未经许可获取自百度经验
  • 5

    常用解决办法4:Resources.Load函数应用不当导致的错误.你自以为脚本逻辑正确(实际上也确实正确啊),的的确确是有给物体赋值,但就是报错Object reference not set to an instance of an object.例如,82r办公区 - 实用经验教程分享!

    objButton = GameObject.Instantiate(Resources.Load("Prefab/FirstButton")) as GameObject;82r办公区 - 实用经验教程分享!

    语法没错,函数调用正确,但是就是报错,说objButton没有赋初值,错误到底在哪呢!82r办公区 - 实用经验教程分享!

    原来系统找不到Resources.load加载路径里面的东西!,去看看你的资源放在哪里了,是不是放在Assets-Resources文件夹下面了,注意文件名"Resources"绝对不能错哦,因为这个函数就是找这个名字下面的资源啊!然后就在检查一下路径有没有错就OK了82r办公区 - 实用经验教程分享!

  • 6

    常用解决办法4:真的是犯错了,没有赋初值,那就赶紧赋初值吧.介绍几种简单的赋初值方法:(1)public Vector3 vec3=new Vector3(0,0,0);(2)public string[] strs = new string[5];(3)int Int = 0;(4)float Flo = 0.0f;82r办公区 - 实用经验教程分享!

    常用解决办法NullReferenceException:Object82r办公区 - 实用经验教程分享!

  • 注意事项

    • 如果喜欢可以点击右边的两个箭头图标分享给好友
    • 如果喜欢本文可以点击下方的“收藏”和“关注”,也可以给作者投上宝贵的一票,您的支持将给作者莫大的动力

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!82r办公区 - 实用经验教程分享!


    标签: 编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码