xiangtingsl 发表于 2021-4-29 09:12

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

为了保持各种MonoBehaviour的独立性,Unity采用了反射的方法才获取MonoBehaviour是否需要Awake()、Start()、Update()等方法。为什么不直接设计一个UnityEngineer命名空间下的接口,让开发者自己实现,从而实现各种生命周期的方法呢?这样相比反射不是性能更好了吗?

xiangtingsl 发表于 2021-4-29 09:20

先问是不是,再问为什么。
Unity会维护一个List用来保存需要Update的Node,之后调用对应脚本的Update方法。
并没有使用反射。
事实上如果留心的话,2015年Unity的博客中就已经说过了。
10000 Update() calls – Unity Blog

acecase 发表于 2021-4-29 09:22

题主指的是初始化时的反射调用吧,前面几位可能有点跑题了。
先说性能。性能上几乎没有区别。通过反射取得元信息后的委托调用,和接口函数调用,开销上的区别可以忽略不计。
个人认为就是一种风格上的取舍。接口化会大幅增大代码量,毕竟MonoBehaviour里还有其他一堆可实现的函数;对新手的友好性也会降低。

KaaPexei 发表于 2021-4-29 09:31

难道不应该做个基类,然后子类要什么就override什么吗?
接口的话就会有一堆空方法

fwalker 发表于 2021-4-29 09:39

为什么邀请到我?我完全不懂计算机呀 。是系统推荐的?
页: [1]
查看完整版本: 为什么Unity的生命周期方法不使用接口?