Unity脚本类为啥要尽量避免继承MonoBehaviour类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity脚本类为啥要尽量避免继承MonoBehaviour类相关的知识,希望对你有一定的参考价值。

unity3d文档里虽然说所有脚本继承MonoBehaviour类,但是你如果想自定义类,就可以不用继承MonoBehaviour,但是可以类只能调用其中的方法和属性,无法拖到场景的物体中使用。
MonoBehaviour里面的几十方法比如
Start(), Awake(), Update(), FixedUpdate(), OnGUI(),这几个方法不管你用哪一个,必须要继承MonoBehaviour
用不用MonoBehaviour关键看要实现什么功能和属性,如果你的类不需要引擎提供的初始化,各种物理,渲染,着色器的回调,最好不要继承MonoBehaviour,游戏是需要优化节约资源的,如果你本身不需要那些功能,继承后,当引擎接触事件,触发的时候,就会反射调用个各种函数,这是很需要耗费资源的,不管咋样,GameObject还是要继承MonoBehaviour的,这样才能new实例化一个对象,但是其他类不要继承就行了。
如果不继承Mono会有那些坏处呢?
1:不能使用Invoke和Coroutine了。
2:调试不方便了,不能在Inspector和Debug tab看到参数。同时如果一个类不继承Mono,那么这个类的List表也无法在Debug界面看到。
3:不是自动调用Start,Update等方法。
继承Mono会有一个BUG:
如果你继承了Mono的类,你就不需要创建它的实例了,但是你不能new创建了,虽然编译可以通过,但是执行的时候就会有个一个错误显示在edit的console窗口,这时候不管你new后面有是否为空,但是系统显示为空,这就是一个BUG了,我的类继承了你,虽然不能new出来,但是怎么会是一个错误呢。
参考技术A 我认为这种说法有些牵强,不继承MonoBehavior类是指一些处理数据结构操作或者通讯类的时候不使用Unity自带的MonoBehavior机制。本人觉着继承MonoBehaviour是有很多好处的,继承MB会相对消耗一些性能,但是编码调试方便,思维顺畅,可视化,速度快。对于开发的效率上价值远远大于那一点点性能消耗。 参考技术B 没明白你说的什么意思 作为游戏组件的脚本必须继承自MonoBehaviour类。 继承自MonoBehaviour的类无法通过new关键字来进行实例化 如果你自定义的工具类这种不需要挂载到游戏对象上的类,可以不继承MonoBehaviour。 参考技术C 应该从MonoBehavior的机制来分析比较合适如果你的类无需引擎提供的各种初始化, 更新及析构, 物理, 渲染等的回调. 最好不要继承MonoBehavior继承后, 引擎会在事件触发时, 通过反射调用各种函数. 这是需要消耗性能的.当然, 如果你的类压根没挂上GameObject. 理论上说, 应该没啥卵用所以总结, 弄不继承MonoBehavior尽量不派生

Unity Unity脚本类为什么要尽量避免继承MonoBehaviour类?

以上是关于Unity脚本类为啥要尽量避免继承MonoBehaviour类的主要内容,如果未能解决你的问题,请参考以下文章

Unity脚本类为啥要尽量避免继承MonoBehaviour类

Unity Unity脚本类为什么要尽量避免继承MonoBehaviour类?

unity ui为啥注册事件和删除事件

Unity中随机间隔上的随机音频

unity脚本挂载不了???而且我根据教材为啥一个简单的都不行

3、在Unity3D中创建一个脚本,默认继承哪个类。( )?