继承MonoBehaviour类的优缺点和相关报错
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类的优缺点和相关报错相关推荐
- Unity+C#开发笔记(七)| unity中继承MonoBehaviour类的脚本里的函数怎么调用 | ╭(●`∀´●)╯╰(●’◡’●)╮
继上文,有个蠢货单例模式只是用来引用,突然遇到了一个继承了MonoBehaviour的类,然后unity跟你讲:不!你不可以在我这里这么用! 啊这--吓得我当场百度... ************** ...
- Python继承类时访问父类的私有函数报错
调用一个python第三方包cn2an中的类Cn2An,因为类的函数cn2an()不符合需求,所以继承了重写.但是发现会报错: 我给继承的类命名为Mts_Cn2An,当出现母类的私有函数__integ ...
- Zend Optimizer 相关报错收集
Zend Optimizer 相关报错 -------------------------------------------------------------------------------- ...
- tensorflow+入门笔记︱基本张量tensor理解与tensorflow运行结构与相关报错
欢迎登陆官网(附https://tensorflow.google.cn/)了解更多 TensorFlow 内容,也可关注 TensorFlow 官方公众号获取更多资讯. Gokula Krishna ...
- Maven打包时出现程序包不存在和test相关报错
Maven打包时出现程序包不存在和test相关报错 1.程序包不存在的问题 例如打包失败后报错情况如下: 程序可编译执行,但是打包存在问题.通过查看maven列表可以看到相关依赖包也导入成功,可能是m ...
- androidstudio安装的app打开闪退,AndroidManifest中也声明了类,但是却没有报错信息。(小坑)
安卓app打开闪退,AndroidManifest中也声明了类,但是却没有报错信息. 最终重写代码,人工debug.发现是当我点击按钮进行计算,需要获取editText的值.而我将editText的值 ...
- 云服务器(阿里云)安装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 ...
- Glup命令行相关报错
Glup命令行相关报错 gulp : 无法加载文件 C:\Node\gulp-demo\gulpfile.js,因为在此系统上禁止运行脚本 解决方法如下 https://blog.csdn.net/g ...
- ELECTRON-VUE相关报错
ELECTRON-VUE相关报错 一.Build: Identifier 'tasks' has already been declared 截图: 原因: .electron-vue\build.j ...
最新文章
- 外媒:高通指控苹果窃取其芯片机密信息!
- c语言编程基本概念,读朱兆祺攻破C语言之一----编程基本概念
- html如何在li里加a,li里面嵌套a标签html和css小例子
- 日志库 winston 的学习笔记 - logger.info 的实现原理单步调试
- SAP Fiori Launchpad launchpad Designer组件和configuration组件的重要存储表一览
- 英语笔记:写作:Limiting the use of disposable plastic bags
- Linux启动管理:grub
- 算数编码java_算术编码核心类
- 《混合云计算》——2.3 整合势在必行
- python3 协程 返回值_python asyncio 获取协程返回值和使用callback
- java实现导出excel表_Java导出网页表格Excel过程详解
- java field的方法_Java Field 详解
- java swing tooltips_tooltips 提示
- 无感FOC算法中解决单电阻采样重构三相电流的难题
- 一、FreeRTOS简介
- MongoDB Ubuntu安装 APP 支付宝微信支付
- vue 所见即所得_适用于Vue.js的轻量级所见即所得HTML编辑器
- python数据分析案例分析题_Python数据分析-案例分析
- 培养气质的99个好习惯
- JS中的预编译(AO、GO详解)