0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Unity 3D优化三个的注意方面

汽车玩家 ? 来源:CSDN ? 作者:Duke教授 ? 2020-03-13 16:47 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Unity优化是一个很大的概念,我们优化时需要注意三个方面:CPU优化,GPU优化,内存优化。

CPU方面的优化:

(1) 减少DrawCall.

(2) 物理组件(Physics)。

(3) 减少GC(垃圾回收)次数。

(4) 脚本的代码质量。

一、对DrawCall的优化

1、什么是DrawCall ?

答:Draw Call就是CPU调用图形编程接口,比如DirectX或OpenGL,来命令GPU进行渲染的操作。

2、 如何减少DrawCall ?

答: 思路就是每个物体尽量减少渲染次数,多个物体最好一起渲染。所以有三个方案:

(1)使用批处理,Unity在运行时将物体合并一次渲染。这里分为动态批处理和静态批处理。

(2)通过把文理打包成图集尽量减少材质的使用。

(3)尽量减少反光,阴影之类的效果,因为那会使物体多次渲染。

静态批处理就是将没有生命的不同物体设置为Static。

动态批处理是引擎自动进行的,例如动态实例化Prefab(预制体)如果动态物体共享相同的材质,引擎会自动批处理。动态批处理有很大限制,网格物体顶点数不能超过900。

二、对物理组件的优化

1、设置一个合适的FixedTimestep。

2、尽量不要使用网格碰撞器,占用CPU计算。

三、处理GC的优化

虽然GC是用来处理内存的,但是的确会增加对CPU的开销,因此对于GC的优化目标就是尽量减少GC的触发。

GC是何时触发的?

1、堆的内存不足时,自动调用GC。

2、编程人员手动调用GC。

GC的优化说白了就是代码的优化,主要注意一下5点:

(1)字符串连接的处理。。

(2)尽量不要使用foreach,减少迭代器产生。

(3)不要直接访问gameObject的tag属性。换成“if(obj.CompareTag(”Player“))”

(4)使用对象池,以实现空间的重复利用。

(5)不要使用LinQ。

四、对代码质量的优化

(1)Transfrom组件获取一次就保留引用,而不是每次都获取。

(2)不用频繁的GetComponent

(3)使用内建数组,如Vector3.zero而不是new Vector(0,0,0)。

(4)对方法的参数优化,善于使用ref关键字。

GPU方面的优化:

GPU瓶颈:

(1)填充率,可以简单理解为图形处理单元每秒渲染的像素数量

(2)像素的复杂度,比如动态阴影、光照、复杂的shader等

(3)几何体的复杂度(顶点数量)

(4)GPU的显存带宽

影响GPU性能的无非就两大方面,一方面顶点数量过多,像素计算过于复杂;另一方面就是GPU的显存带宽。

优化方法:

① 减少顶点数量,简化计算复杂度。

② 压缩图片,以适应显存带宽。

一、减少顶点数量,简化计算复杂度

(1)保持材质的数目尽可能少,更容易批处理。

(2)使用纹理图集,代替小贴图。

(3)如果使用了纹理图集和共享材质,使用Renderer.sharedMaterial来代替Renderer.material。

(4)使用光照贴图(lightmap)而非实时灯光。

(5)使用LOD(多层次细节),好处就是那些离得远看不清的细节可以忽略。

(6)遮挡剔除

(7)使用mobile版的shader,因为简单。

二、压缩图片,减小显存带宽压力

(1)OpenGL ES2.0使用ETC1格式压缩等,在打包设置里有。

(2)使用MipMap,小图集

内存方面的优化:

(1)Unity3D的内部内存

(2)Mono的托管内存

(3)若干自己引入或第三方DLL所需的内存(非重点)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11116

    浏览量

    218310
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4980

    浏览量

    132107
  • Unity
    +关注

    关注

    1

    文章

    129

    浏览量

    22623
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TechWiz LCD 3D应用:局部液晶配向

    ,并增加Condition层 此层为局部摩擦的层,所以要注意区域的设置; 设置完成后要生成mesh文件 2.2在TechWiz LCD 3D软件中将Local Mask的顶部以及底部配向角度添加进来 3. 结果查看 3.1
    发表于 06-16 08:46

    3D AD库文件

    3D库文件
    发表于 05-28 13:57 ?5次下载

    3D闪存的制造工艺与挑战

    3D闪存有着更大容量、更低成本和更高性能的优势,本文介绍了3D闪存的制造工艺与挑战。
    的头像 发表于 04-08 14:38 ?1241次阅读
    <b class='flag-5'>3D</b>闪存的制造工艺与挑战

    开源项目!如何制作一手机用的电动3D扫描转盘

    这个项目里,作者会教你怎么做一简单的电动3D扫描转盘,主要是给手机用的。整个装置分为三个部分:顶板、齿轮板和底座。顶板是固定的平台,用来放置你要扫描的物体。 中间的齿轮板是整个装
    发表于 03-25 13:45

    将应用程序工具套件集成到Unity 3D OpenVINO?过程中遇到\"DLLNotFound异常\"错误怎么解决?

    在将 OpenVINO?工具套件与 Unity 3D* 集成期间,Unity 3D 编辑器无法找到 OpenVINO 工具套件的依赖性,并引发 DLLNotFoundException
    发表于 03-05 06:22

    TechWiz LCD 3D应用:局部液晶配向

    ,并增加Condition层 此层为局部摩擦的层,所以要注意区域的设置; 设置完成后要生成mesh文件 2.2在TechWiz LCD 3D软件中将Local Mask的顶部以及底部配向角度添加进来 3. 结果查看 3.1
    发表于 02-08 08:52

    SciChart 3D for WPF图表库

    SciChart 3D for WPF 是一实时、高性能的 WPF 3D 图表库,专为金融、医疗和科学应用程序而设计。非常适合需要极致性能和丰富的交互式 3D 图表的项目。 使用我们
    的头像 发表于 01-23 13:49 ?745次阅读
    SciChart <b class='flag-5'>3D</b> for WPF图表库

    腾讯混元3D AI创作引擎正式发布

    近日,腾讯公司宣布其自主研发的混元3D AI创作引擎已正式上线。这一创新性的创作工具将为用户带来前所未有的3D内容创作体验,标志着腾讯在AI技术领域的又一重大突破。 混元3D AI创作引擎凭借其强大
    的头像 发表于 01-23 10:33 ?686次阅读

    腾讯混元3D AI创作引擎正式上线

    近日,腾讯公司宣布其自主研发的混元3D AI创作引擎已正式上线。这一创新性的创作工具,标志着腾讯在3D内容生成领域迈出了重要一步。 混元3D AI创作引擎的核心功能极为强大,用户只需通过简单的提示词
    的头像 发表于 01-22 10:26 ?683次阅读

    3D打印技术在材料、工艺方面的突破

    2024年3D打印技术领域在新材料、新工艺和新应用方面继续取得突破,并呈现出多样的发展态势。工艺方面,行业更加关注极限制造能力,从2023年的无支撑3D打印到2024年的点熔化、锻打印
    的头像 发表于 01-13 18:11 ?1093次阅读
    <b class='flag-5'>3D</b>打印技术在材料、工艺<b class='flag-5'>方面</b>的突破

    TechWiz LCD 3D应用:局部液晶配向

    ,并增加Condition层 此层为局部摩擦的层,所以要注意区域的设置; 设置完成后要生成mesh文件 2.2在TechWiz LCD 3D软件中将Local Mask的顶部以及底部配向角度添加进来 3. 结果查看 3.1
    发表于 01-03 08:58

    uvled光固化3d打印技术

    相应的软件设计出维模型,然后配合3D打印机,利用电脑程序设计光源的扫射路径。程序会按设计好的扫射路径,把光源照射在液态光敏树脂特定的区域上,使其表面树脂固化成薄薄
    的头像 发表于 12-24 13:13 ?859次阅读
    uvled光固化<b class='flag-5'>3d</b>打印技术

    KiCad发现之旅()PCB 3D查看器

    方式查看您的PCB设计! 加上庞大的3D模型库,您可以在交互式3D视图中立即检查您的设计。与二维显示相比,旋转和平移检查细节更容易。 与PCB集成的3D查看器 可以在PCB编辑器中简单地激活3
    的头像 发表于 11-12 12:23 ?2624次阅读
    KiCad发现之旅(<b class='flag-5'>三</b>)PCB <b class='flag-5'>3D</b>查看器

    3D打印机优化:ARMxy嵌入式计算机的作用

    、塑料的丝材通过喷射粘结剂或挤出等方式实现层层堆积叠加形成维实体。 解决方案 3D打印机的控制系统硬件通常由两部分组成: 工业电脑:这是控制系统的核心部分,相当于一微型电脑。主板上会有各种接口,用于连接打印机的各个部件,如喷
    的头像 发表于 10-10 15:22 ?649次阅读
    <b class='flag-5'>3D</b>打印机<b class='flag-5'>优化</b>:ARMxy嵌入式计算机的作用

    广东维扫描仪3D扫描电器零部件逆向工程3D建模抄数设备-CASAIM

    3D扫描
    中科院广州电子
    发布于 :2024年09月26日 09:35:35