Unity3D文档里虽然说所有脚本继承MonoBehaviour类,但如果你想自定义类,就可以不用继承MonoBehaviour,但是这个类只能调用其中的方法和属性,无法拖到场景的物体中使用。

所有从MonoBehaviour继承过来的类,Unity都会自动创建实例,并且调用被重载的方法,例如start,Update等方法。

如果不继承Mono会有哪些好处呢?

1:节约资源。

如果不继承Mono会有哪些坏处呢?

1:不能使用Invoke和Coroutine了。

2:调试不方便了,不能在Inspector和Debug tab看到参数。同时如果一个类不继承Mono,那么这个类的List表也无法在Debug界面看到。

3:不能自动调用Start,Update,OnGUI等方法。

考虑继承的情况:
1、MonoBehaviour里面的方法比如Start(), Awake(), Update(), FixedUpdate(), OnGUI(),还有变量比如gameObject,这几个方法不管你用哪一个,必须要继承MonoBehaviour,用不用MonoBehaviour关键看要实现什么功能和属性。

2、GameObject还是要继承MonoBehaviour的,这样才能new实例化一个对象,但是其他类不要继承就行了。

尽量避免继承的情况:

1、如果你的类不需要引擎提供的初始化,各种物理,渲染,着色器的回调,最好不要继承MonoBehaviour,游戏是需要优化节约资源的。如果你本身不需要那些功能,继承后,当引擎接触事件,触发的时候,就会反射调用个各种函数,这是很需要耗费资源的。

2、当需要获取用户鼠标键盘输入的时候?研究一下是否可以通过外部类的update调用自身方法实现。

继承Mono会有一个BUG:

如果你继承了Mono的类,你就不需要创建它的实例,而且你也不能new创建。虽然编译可以通过,但是执行的时候就会有个一个错误显示在edit的console窗口,这时候不管你new后面是否为空,但是系统显示为空,这就是一个BUG了:我的类继承了你,虽然不能new出来,但是它认为,这不算一个错误啊。所以当获取对象或其值报错为null时,考虑是否继承了monobehaviour类。

继承MonoBehaviour类的优缺点和相关报错相关推荐

  1. Unity+C#开发笔记(七)| unity中继承MonoBehaviour类的脚本里的函数怎么调用 | ╭(●`∀´●)╯╰(●’◡’●)╮

    继上文,有个蠢货单例模式只是用来引用,突然遇到了一个继承了MonoBehaviour的类,然后unity跟你讲:不!你不可以在我这里这么用! 啊这--吓得我当场百度... ************** ...

  2. Python继承类时访问父类的私有函数报错

    调用一个python第三方包cn2an中的类Cn2An,因为类的函数cn2an()不符合需求,所以继承了重写.但是发现会报错: 我给继承的类命名为Mts_Cn2An,当出现母类的私有函数__integ ...

  3. Zend Optimizer 相关报错收集

    Zend Optimizer 相关报错 -------------------------------------------------------------------------------- ...

  4. tensorflow+入门笔记︱基本张量tensor理解与tensorflow运行结构与相关报错

    欢迎登陆官网(附https://tensorflow.google.cn/)了解更多 TensorFlow 内容,也可关注 TensorFlow 官方公众号获取更多资讯. Gokula Krishna ...

  5. Maven打包时出现程序包不存在和test相关报错

    Maven打包时出现程序包不存在和test相关报错 1.程序包不存在的问题 例如打包失败后报错情况如下: 程序可编译执行,但是打包存在问题.通过查看maven列表可以看到相关依赖包也导入成功,可能是m ...

  6. androidstudio安装的app打开闪退,AndroidManifest中也声明了类,但是却没有报错信息。(小坑)

    安卓app打开闪退,AndroidManifest中也声明了类,但是却没有报错信息. 最终重写代码,人工debug.发现是当我点击按钮进行计算,需要获取editText的值.而我将editText的值 ...

  7. 云服务器(阿里云)安装kafka及相关报错处理(WARN Connection request from old client /58.247.201.56:31365; will be dropp)

    linux下载:wget http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.12-2.0.0.tgz 云服务器安装kafka,部署zookee ...

  8. Glup命令行相关报错

    Glup命令行相关报错 gulp : 无法加载文件 C:\Node\gulp-demo\gulpfile.js,因为在此系统上禁止运行脚本 解决方法如下 https://blog.csdn.net/g ...

  9. ELECTRON-VUE相关报错

    ELECTRON-VUE相关报错 一.Build: Identifier 'tasks' has already been declared 截图: 原因: .electron-vue\build.j ...

最新文章

  1. 外媒:高通指控苹果窃取其芯片机密信息!
  2. c语言编程基本概念,读朱兆祺攻破C语言之一----编程基本概念
  3. html如何在li里加a,li里面嵌套a标签html和css小例子
  4. 日志库 winston 的学习笔记 - logger.info 的实现原理单步调试
  5. SAP Fiori Launchpad launchpad Designer组件和configuration组件的重要存储表一览
  6. 英语笔记:写作:Limiting the use of disposable plastic bags
  7. Linux启动管理:grub
  8. 算数编码java_算术编码核心类
  9. 《混合云计算》——2.3 整合势在必行
  10. python3 协程 返回值_python asyncio 获取协程返回值和使用callback
  11. java实现导出excel表_Java导出网页表格Excel过程详解
  12. java field的方法_Java Field 详解
  13. java swing tooltips_tooltips 提示
  14. 无感FOC算法中解决单电阻采样重构三相电流的难题
  15. 一、FreeRTOS简介
  16. MongoDB Ubuntu安装 APP 支付宝微信支付
  17. vue 所见即所得_适用于Vue.js的轻量级所见即所得HTML编辑器
  18. python数据分析案例分析题_Python数据分析-案例分析
  19. 培养气质的99个好习惯
  20. JS中的预编译(AO、GO详解)

热门文章

  1. C/C++的ide编译器CLion的安装及快捷键使用
  2. Linux系统编程:fork函数的使用【循环创建N个子线程】
  3. 实例化vue之前赋值html元素导致事件失效
  4. Python基础学习总结(六)
  5. 关于discuz 不能全文搜索的问题
  6. mysql 与QT的连接
  7. .net 反射调用私有变量
  8. 什么样的数据才有价值?应该怎样收集和处理?终于有人讲明白了
  9. 做决定前别拍脑袋:两个成功案例看懂A/B测试
  10. 深入理解java虚拟机gc_java底层:GC相关——深入理解java虚拟机