笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。
CSDN视频网址:http://edu.csdn.net/lecturer/144
最近给读者分享一下关于Unity3D的优化,这个问题对于开发者来说都是比较头疼的问题,这里先介绍一下关于项目开发通常的做法。开发项目前期由于赶进度,不停的堆积功能和资源,这样项目完成后,包体非常庞大,代码写的也很乱,后期项目进入优化阶段,包括代码的重构,各种BUG的修复,从而导致版本开始变的不可控制,项目研发周期也是不停的延期延期,这种情况在大部分公司都是常见的问题。其实作为老板来说,他肯定要着急看到项目成果,所以就不停的督促开发人员加班加点的搞,站在老板的角度考虑问题,情有可原。
但是,作为开发者来说,我们不能按照老板的节奏走,这样后面不仅坑的是自己,也把公司坑掉了,后期项目由于各种问题很容易夭折,这种局面是不可控制的,因为项目开发完成了,后期还会加入很多功能,如果前期没有规划好,就会出现前一发而动全身的情况,这样也预示着项目即将死掉。如何避免这种情况发生,在这些系列文章中给读者分享一下笔者关于这些问题的解决方案。
用Unity引擎开发,我们就要了解它们的工作机制,这样在项目进行优化时也会有针对性,关于优化方面,笔者也做过一些视频讲座,当然这些系列文章是视频中没有的,Unity首先遇到的问题就是效率问题,很多项目由于效率问题夭折了,所以这个问题的解决非常重要,如何优化效率也就是运行帧率,针对于Unity就是减少Draw Call的数量。
网上关于Draw Call的介绍非常多,这里再给读者向细的方向讲一下,其实Draw Call的执行就是CPU与GPU之间的通信,这就涉及到渲染流水线的概念,渲染流水线的起点是CPU,主要分三个阶段:
1、CPU把数据加载到显存中