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出来,但是怎么会是一个错误呢。
百度网友f4f146dc17
2017-06-24 · TA获得超过112个赞
知道答主
回答量:82
采纳率:0%
帮助的人:51.2万
展开全部
我认为这种说法有些牵强,不继承MonoBehavior类是指一些处理数据结构操作或者通讯类的时候不使用Unity自带的MonoBehavior机制。本人觉着继承MonoBehaviour是有很多好处的,继承MB会相对消耗一些性能,但是编码调试方便,思维顺畅,可视化,速度快。对于开发的效率上价值远远大于那一点点性能消耗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
EvenHHZ
2018-07-26 · 知道合伙人软件行家
EvenHHZ
知道合伙人软件行家
采纳数:13691 获赞数:18844
个人出版图书:《玩转Python网络爬虫》、《玩转Django2.0》

向TA提问 私信TA
展开全部
没明白你说的什么意思 作为游戏组件的脚本必须继承自MonoBehaviour类。 继承自MonoBehaviour的类无法通过new关键字来进行实例化 如果你自定义的工具类这种不需要挂载到游戏对象上的类,可以不继承MonoBehaviour。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-06-28
展开全部
应该从MonoBehavior的机制来分析比较合适如果你的类无需引擎提供的各种初始化, 更新及析构, 物理, 渲染等的回调. 最好不要继承MonoBehavior继承后, 引擎会在事件触发时, 通过反射调用各种函数. 这是需要消耗性能的.当然, 如果你的类压根没挂上GameObject. 理论上说, 应该没啥卵用所以总结, 弄不继承MonoBehavior尽量不派生

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式