惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
美团技术团队
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
有赞技术团队
有赞技术团队
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
月光博客
月光博客
MyScale Blog
MyScale Blog
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog

学无止境

肌电手环数据初探 - 人机交互 - 未来 在Mac系统中实现STLink烧录固件(不用虚拟机!) - MacBook - 不看会后悔的实用技巧分享 hexo-action修复ssh-keyscan not found问题 - 个人博客 - 不看会后悔的实用技巧分享 Mac使用体验~ - 心情 - 清风明月 手拉手教你部署思源笔记+发布服务+外网访问 - 极空间 - 我的NAS捣鼓笔记 硕士生涯致谢 - 永恒 - 清风明月 硕士毕设展示,捣鼓一下未来适合AR眼镜的文本输入方式~ - 永恒 - 清风明月 2023 XR 设备体验分享~ - 永恒 - 清风明月 Rokid 空间小程序《我们的地球》开源~ - Rokid - 未来 Unity3D特效学习笔记(1)魔法球 - Unity3D - 未来 Rokid 新项目构建过程中,可能遇到的问题及解决方案 - Rokid - 未来 AR 应用创意分享:The Seed - 永恒 - 清风明月 AR 应用创意分享:魔刀千刃! - 永恒 - 清风明月 AR 应用创意分享:The Assistant - 永恒 - 清风明月 USB接口介绍 - 杂七杂八 - 不看会后悔的实用技巧分享 Unity3D优化笔记(10)其他优化 - Unity3D - 未来 Unity3D优化笔记(9)合并网格、动画、音频、物理优化 - Unity3D - 未来 Unity3D优化笔记(7)光照优化、图片优化 - Unity3D - 未来 Unity3D优化笔记(6)遮挡剔除 - Unity3D - 未来
Unity3D优化笔记(8)UI优化、模型优化和LOD技术 - Unity3D -...
本文作者: 宇凌喵 @学无止境 · 2023-10-19 · via 学无止境
  • 尽量避免使用 IMGUI 来做游戏时的 UI,因为 IMGUI 的开销比较大。
  • 如果一个 UGUI 的控件不需要进行射线检测,则可以取消勾选 Raycast Target。
  • 尽量避免使用完全透明的图片和 UI 控件。因为即使完全透明,我们看不见它,但它仍然会产生一定的性能开销。如果 UI 中一定要用到很多张完全透明的图片,则建议把这些完全透明的图片由单独的摄像机进行渲染,且这些 UI 不要叠加到场景摄像机的渲染范围内。
  • 尽量避免 UI 控件的重叠。如果多个 UI 有重叠的部分,则会稍微增加一些额外的计算和渲染的开销。虽然这部分开销通常是非常小的,但我们最好也尽量避免这种情况。
  • UI 的文字使用 TextMeshPro 比使用 Text 的性能更好。但是 TextMeshPro 对中文的支持不太好。

# 模型优化

模型导入 Unity 后,可以选中这个模型,在 Inspector 窗口设置它的属性。

  • 在 Model 选项卡

    • 启用 Mesh Compression 可以压缩模型,压缩程度越高,模型精度越低,但是模型也会节省一些空间。
    • 如果该模型不需要用代码来读写,则可以取消勾选 Read/Write Enabled。
    • 设置 Optimize Game Objects 可以优化模型,通常默认选择 Everything。
    • 如果该模型不需要使用法线,则可以把 Normals 设置为 None。
    • 如果该模型不需要用混合变形法线,则可以把 Blend Shape Normals 设置为 None。
    • 如果该模型不需要使用切线,则可以把 Tangents 设置为 None。
    • 如果该模型不需要用光照 UV 贴图,则可以取消勾选 Swap UVs 和 Generate Lightmap UVs。
  • 对于 Rig 选项卡

    • Animation Type 如果选择 Generic Rig 会比 Humanoid Rig 性能更好,但无法使用动画重定向。一般使用 Humanoid Rig 是为了对人型的角色进行动画重定向,所以要根据自己的情况来选择。
    • 如果模型不需要使用动画,例如一些完全不会动的石头等物体,则可以将 Animation Type 选择为 None。
    • Skin Weights 默认是 4,对于一些不重要的动画对象,本变量可以设置为 1,这样可以节省计算量。
    • 建议勾选 Optimize Bones,这样会自动剔除没有蒙皮顶点的骨骼。
    • 勾选 Optimize Game Object 可以提高角色动画的性能,但是在某些情况下可能会导致角色动画出现问题,是否勾选要看动画效果而定。
  • 对于 Animation 选项卡

    • 如果模型不需要使用动画,则可以取消勾选 Import Animation。

    • 设置 Anim.Compression 可以调整动画的压缩方式

      • Off 表示不压缩动画,这样动画文件可能会占用较大的空间,但是在运行时不会有任何信息损失,
      • Keyframe Reduction 表示使用关键帧算法来压缩动画,这样会显著减小动画文件的大小,同时保持相对较高的动画质量,
      • Optimal 表示会尽可能高地压缩网格,但是这样也会导致压缩时间增加。
  • 对于 Materials 选项卡

    • 如果使用 Untiy 的默认材质,则可以把 Material Creation Mode 设置为 None。

Edit——Project Settings——Player—— 勾选 Optimize Mesh Data,这样一来,Unity 会在构建的时候中对网格数据进行优化处理,以达到提高游戏性能的效果。但是这样往往会修改网格,我们勾选之后应该要进行测试,确保没有问题,再确定启用它。

把多个模型的网格合并为一个网格。可以使用自己写代码,使用 Unity 自带的 CombineMeshes 方法,也可以使用资源商店的插件,在资源商店搜 Mesh Combine 可以搜索到相关的插件,例如 Easy Mesh Combine Tool 等插件。

减少模型的顶点、面、材质、骨骼、蒙皮网格。这一般由美术人员来完成。

# LOD(Level of Detail)

LOD 是 Level of Detail 的简称,意思是细节层次,它是一种优化技术。

LOD 的原理,就是我们可以为一个游戏对象设定多个模型,这些模型消耗的游戏性能由高到低排列。会根据摄像机距离模型的远近自动显示对应的模型。近的时候显示最精细的模型,距离中等的时候显示没那么精细的模型,远的时候显示粗糙的模型,最远的时候可以隐藏该模型。

使用 LOD 技术能起到优化渲染性能的效果。但是使用 LOD 技术也会增加内存占用。

在 Unity 中可以使用 LODGroup 组件来实现 LOD 技术。