07 2019 档案
摘要:1. DrawCall是啥?其实就是对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西。所以,是谁去调用这些接口呢?CPU。比如有上千个物体,每一个的渲染都需要去调用一次底层接口,而每一次的调用CPU都需要做很多工作,那么CPU必然不堪重负。但是对于GPU来说,图形处理的工作量
阅读全文
摘要:1.对象池Object Pool的原理: 有些GameObject是在游戏中需要频繁生成并销毁的(比如射击游戏中的子弹),以前的常规做法是:Instantiate不断生成预设件Prefab,然后采用碰撞销毁,或者定时销毁,大量创建重复对象造成内存损耗,影响性能还容易产生内存碎片。 所谓对象池,就是针
阅读全文
摘要:没想到Unity的音频会成为内存杀手,在实际的商业项目中,音频的优化必不可少。 1. Unity支持许多不同的音频格式,但最终它将它们全部转换为首选格式。音频压缩格式有PCM、ADPCM、Vorbis,不是所有平台都支持这些所有的压缩格式,有些平台,例如WebGL只支持AAC格式。 2.所有音频导入
阅读全文
摘要:1. Occlusion Culling-遮挡剔除的含义:没有在Camear视野范围内的游戏物体不进行渲染Render(默认情况下,Unity是会渲染所有GameObject,无论Camear是否看得见),例如下图: 2. 使用比较简单,效果也是立竿见影 (1)配置下游戏物体: (2)“window
阅读全文
摘要:在游戏中,经常可以看到从一个关卡跳到另一个关卡时,有一个显眼的进度条,研究了下,其时也很简单: public void LoadAScene() { StartCoroutine(LoadSceneAsync("SampleScene")); } IEnumerator LoadSceneAsync
阅读全文
摘要:1. 协程不是多线程,见官方图,它发生在LateUpdate()之后的 2. 定义协程的方法,写个方法,它必须返回IEnumerator 接口,可带参数,也可以不带参数; 3. 启动协程StartCoroutine方法, StartCoroutine("方法名")或StartCoroutine("方
阅读全文