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

    文章

    11218

    浏览量

    222973
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5100

    浏览量

    134473
  • Unity
    +关注

    关注

    1

    文章

    131

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    技术资讯 I 多板系统 3D 建模,提升设计精度和性能

    制造环节测试、优化设计,进行概念验证,提高成本效益和设计精度。工程师在CAD程序中设计新器件。3D建模3D建模指的是利用专业软件创建维对象(无生命的或有生命的)或
    的头像 发表于 11-21 17:45 2273次阅读
    技术资讯 I 多板系统 <b class='flag-5'>3D</b> 建模,提升设计精度和性能

    地平线与Unity中国达成战略合作

    近日,中国智驾科技领军企业地平线与全球领先的实时3D内容创作和运营平台Unity正式签署战略合作协议。双方将深度融合地平线HSD (Horizon SuperDrive) 人机交互系统与Unity
    的头像 发表于 11-03 16:43 1365次阅读

    玩转 KiCad 3D模型的使用

    时间都在与 2D 的焊盘、走线和丝印打交道。但一完整的产品,终究是要走向物理世界的。元器件的高度、接插件的朝向、与外壳的配合,这些都是 2D 视图难以表达的。 幸运的是,KiCad 提供了强大的
    的头像 发表于 09-16 19:21 1.1w次阅读
    玩转 KiCad <b class='flag-5'>3D</b>模型的使用

    iTOF技术,多样化的3D视觉应用

    视觉传感器对于机器信息获取至关重要,正在从二维(2D)发展到维(3D),在某些方面模仿并超越人类的视觉能力,从而推动创新应用。3D 视觉解
    发表于 09-05 07:24

    AD 3D封装库资料

     AD  PCB 3D封装
    发表于 08-27 16:24 2次下载

    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 6次下载

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

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

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

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