- 什么是对象池?
存放需要被反复调用的资源的一个空间 - 什么是Drawcall?
在Unity中每次引擎准备数据并通知GPU的过程称为一次Drawcall - Drawcall高了会有什么影响?
Drawcall越高对Gpu的消耗越大 - 如何降低Drawcall?
动态合批,静态合批,降低Shader特性 - UI的优化,或者是需要避免的一些问题
将一个画面的图片放到一个图集中
图片和文字尽量不要交叉,会产生多余的Drawcall,相同材质和纹理的UI元素是可以合并的
UI尽量不要太多重叠
取消勾选不必要的射线检测
UI的动静分离,将动态的UI和静态的UI元素放在不同的Canvas下,减少网格的重构频率 - LOD是什么?
Level of detail多层次细节是常用的游戏优化手段 - LOD的优缺点是什么?
优点:按照模型的位置和重要程度,决定渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算
缺点:增加建模的工作量,增加大量的内存消耗 - 什么叫动态合批,和静态合批有什么区别?
动态合批:如果动态的物体共用着相同的材质,那么Unity会对这些物体自动的进行批处理。
区别:动态合批的一切都是自动的,不需要做任何操作,而且物体是可以移动的,静态合批的自由度很高,缺点是可能会占用更多的内存,而且静态合批之后的物体是不能移动的 - 如何优化内存?
压缩自带的类库
将暂时不用的物体隐藏而不是直接销毁
释放assetbundle占用的资源、
降低模型的面数,降低模型的骨骼数量,降低贴图的大小
使用光照贴图,使用多层次细节,使用着色器,使用预设 - 简述如何避免GC
重用对象:避免不必要的对象的创建,可以使用对象池
避免创建大量的临时对象,这样会导致频繁的小型GC
尽量使用基本类型和不可变对象,基本类型比如int、float等在栈上分配内存,不会引起GC,而不可变对象如string在创建后状态就不能修改,这意味着不需要额外得内存分配
可以调整堆大小,使其满足程序的需求
如果使用一些大对象或者缓存,可以考虑对内存进行手动管理,比如回收或清理
面试知识记录——优化
最新推荐文章于 2024-11-11 11:26:12 发布