面试知识记录——优化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Winjet_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值