为什么Unity的生命周期方法不使用接口?
为了保持各种MonoBehaviour的独立性,Unity采用了反射的方法才获取MonoBehaviour是否需要Awake()、Start()、Update()等方法。为什么不直接设计一个UnityEngineer命名空间下的接口,让开发者自己实现,从而实现各种生命周期的方法呢?这样相比反射不是性能更好了吗? 先问是不是,再问为什么。Unity会维护一个List用来保存需要Update的Node,之后调用对应脚本的Update方法。
并没有使用反射。
事实上如果留心的话,2015年Unity的博客中就已经说过了。
10000 Update() calls – Unity Blog 题主指的是初始化时的反射调用吧,前面几位可能有点跑题了。
先说性能。性能上几乎没有区别。通过反射取得元信息后的委托调用,和接口函数调用,开销上的区别可以忽略不计。
个人认为就是一种风格上的取舍。接口化会大幅增大代码量,毕竟MonoBehaviour里还有其他一堆可实现的函数;对新手的友好性也会降低。 难道不应该做个基类,然后子类要什么就override什么吗?
接口的话就会有一堆空方法 为什么邀请到我?我完全不懂计算机呀 。是系统推荐的?
页:
[1]