Unity脚本类为什么要尽量避免继承MonoBehaviour类
2017-06-28
展开全部
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出来,但是怎么会是一个错误呢。
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出来,但是怎么会是一个错误呢。
展开全部
我认为这种说法有些牵强,不继承MonoBehavior类是指一些处理数据结构操作或者通讯类的时候不使用Unity自带的MonoBehavior机制。本人觉着继承MonoBehaviour是有很多好处的,继承MB会相对消耗一些性能,但是编码调试方便,思维顺畅,可视化,速度快。对于开发的效率上价值远远大于那一点点性能消耗。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-07-26 · 知道合伙人软件行家
关注
展开全部
没明白你说的什么意思 作为游戏组件的脚本必须继承自MonoBehaviour类。 继承自MonoBehaviour的类无法通过new关键字来进行实例化 如果你自定义的工具类这种不需要挂载到游戏对象上的类,可以不继承MonoBehaviour。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-06-28
展开全部
应该从MonoBehavior的机制来分析比较合适如果你的类无需引擎提供的各种初始化, 更新及析构, 物理, 渲染等的回调. 最好不要继承MonoBehavior继承后, 引擎会在事件触发时, 通过反射调用各种函数. 这是需要消耗性能的.当然, 如果你的类压根没挂上GameObject. 理论上说, 应该没啥卵用所以总结, 弄不继承MonoBehavior尽量不派生
。
。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询