尽信书不如无书,更何况是网上开发者的博客。这里也包含我自己的博客,有的时候回过头来看是有错误的地方,但是我也懒得改了,而且很多时候我们看到的文章还不一定是原始地址,而是被各个网站七转八转的,更加不可能保证准确性。
这里测试了这么一个说法:“不要在脚本中直接使用transform或者gameObject,而应该在一开始缓存成成员变量如_transform和_gameObject来访问。因为前者每次执行的时候都要获取对应的组件,效率低。”
这种说法不能说完全是错误的,但是经过自己的测试明白其原理后,会对这个问题以及与其类似的问题都会有更加清晰的了解。
首先我们使用组件的时候尽量在一开始使用GetComponent缓存到成员变量里面,这个是完全合理的。但是tansform和gameObject如此常用的对象,Unity应该有更好的优化才对。否则就显得太低级了。我测试的结果也确实如此。如果不想看后面的分析,直接看结论就好了。
结论:Unity中直接访问transform效率会比缓存成成员变量慢一点点,这个只有量级非常大的时候才会体现出来。 Unity对transform和gameObject有足够的优化处理,不要自己再模拟Unity写属性来处理,多数情况效率更差。
请看下图: