找回密码
 立即注册
查看: 544|回复: 4

为什么Unity的生命周期方法不使用接口?

[复制链接]
发表于 2021-4-29 09:12 | 显示全部楼层 |阅读模式
为了保持各种MonoBehaviour的独立性,Unity采用了反射的方法才获取MonoBehaviour是否需要Awake()、Start()、Update()等方法。为什么不直接设计一个UnityEngineer命名空间下的接口,让开发者自己实现,从而实现各种生命周期的方法呢?这样相比反射不是性能更好了吗?
 楼主| 发表于 2021-4-29 09:20 | 显示全部楼层
先问是不是,再问为什么。
Unity会维护一个List用来保存需要Update的Node,之后调用对应脚本的Update方法。
并没有使用反射。
事实上如果留心的话,2015年Unity的博客中就已经说过了。
10000 Update() calls – Unity Blog
发表于 2021-4-29 09:22 | 显示全部楼层
题主指的是初始化时的反射调用吧,前面几位可能有点跑题了。
先说性能。性能上几乎没有区别。通过反射取得元信息后的委托调用,和接口函数调用,开销上的区别可以忽略不计。
个人认为就是一种风格上的取舍。接口化会大幅增大代码量,毕竟MonoBehaviour里还有其他一堆可实现的函数;对新手的友好性也会降低。
发表于 2021-4-29 09:31 | 显示全部楼层
难道不应该做个基类,然后子类要什么就override什么吗?
接口的话就会有一堆空方法
发表于 2021-4-29 09:39 | 显示全部楼层
为什么邀请到我?我完全不懂计算机呀 。是系统推荐的?
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-21 00:48 , Processed in 0.066704 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表