Unity 性能优化之UI和模型优化(九)

发布于:2024-05-09 ⋅ 阅读:(29) ⋅ 点赞:(0)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激!


前言

UI和模型的一些优化。unity本身支持多种UI:IMGUI、UIElement、UGUI、NGUI、FairyGUI等

一、选择UI

一般选择使用UGUI就好,也就是unity默认使用的UI。
IMGUI:仅用于Editor扩展,或运行时Debug
UIElement:可用于发布运行时和Editor

UGUI:渲染原理:根据Hierarchy的顺序来排序,越下面渲染在越顶层。Canvas与NGUI的UIPanel类似,每个Canvas将优化合并为1个Mesh或多个SubMesh;

推荐:FairyGUI也是很好的选择,但是有学习成本(新手也能1天学会基本使用,更多的是熟悉习惯花时间)
渲染原理:没有采取Mesh合并的策略,而是基于类似于Unity的Dynamic Batching技术,对DrawCall进行优化。它在不改变显示效果的前提下,尽可能的把相同材质的物体调整到连续的RenderingOrder值上,以促使它们能够被Unity DynamicBatching优化;

二、UGUI的优化

1.Raycast Target

一个UGUI的控件不需要进行射线检测(也就是不需要鼠标等交互),则可以取消勾选Raycast Target

2.UI控件的重叠

尽量避免UI控件的重叠。如果多个UI有重叠的部分,则会稍微增加一些额外的计算和渲染的开销。虽然这部分开销通常是非常小的,但我们最好也尽量避免这种情况。

3.TextMeshPro

UI的文字使用TextMeshPro比使用Text的性能更好,还可以制作图文混排:链接: unity 图文混排 TextMeshPro
区别:中文需要,制作字体集。

二、模型优化

根据项目情况也可以和建模师商量,减少顶点数,骨骼等等。
模型导入Unity后,可以选中这个模型,在Inspector窗口设置它的属性。模型的一些优化可能会使动画出现问题

1.Model选项卡

在这里插入图片描述

Mesh Compression

在Model选项卡,启用Mesh Compression可以压缩模型,压缩程度越高,模型精度越低,但是模型也会节省一些空间。
在这里插入图片描述

Read/Write Enabled

和图片一样,如果该模型不需要用代码来读写,则可以取消勾选Read/Write Enabled。

设置Optimize Game Objects可以优化模型

选择Everything即可。
在这里插入图片描述

Normals和Blend Shape Normals

如果该模型不需要使用法线,则可以把Normals设置为None。
如果该模型不需要用混合变形法线,则可以把Blend Shape Normals设置为None。
如果该模型不需要使用切线,则可以把Tangents设置为None。
如果该模型不需要用光照UV贴图,则可以取消勾选Swap UVs和Generate Lightmap UVs
在这里插入图片描述

2.Rig选项卡

在这里插入图片描述

Animation Type

对于Rig选项卡,Animation Type如果选择Generic Rig会比Humanoid Rig性能更好,但是一般使用Humanoid Rig是为了对人型的角色进行动画重定向,所以要根据自己的情况来选择。
如果模型不需要使用动画,例如一些完全不会动的石头等物体,则可以将Animation Type选择为None。

Skin Weights

Skin Weights默认是4,对于一些不重要的动画对象,本变量可以设置为1,这样可以节省计算量。
建议勾选Optimize Bones,这样会自动剔除没有蒙皮顶点的骨骼。
勾选Optimize Game Object可以提高角色动画的性能,但是在某些情况下可能会导致角色动画出现问题,是否勾选要看动画效果而定。
如果角色模型是可以换装的,则在导入该模型后不要勾选这个选项,而可以在游戏运行时,该角色换装后,通过AnimatorUtility.OptimizeTransformHierarchy来勾选这个选项。

3.Animation选项卡

Import Animation

如果模型不需要使用动画,则可以取消勾选Import Animation。
对于Animation选项卡,设置Anim.Compression可以调整动画的压缩方式:
Off表示不压缩动画,这样动画文件可能会占用较大的空间,但是在运行时不会有任何信息损失
Keyframe Reduction表示使用关键帧算法来压缩动画,这样会显著减小动画文件的大小,同时保持相对较高的动画质量
Optimal表示会尽可能高地压缩网格,但是这样也会导致压缩时间增加。

4.Materials选项卡

如果使用Untiy的默认材质,则可以把Material Creation Mode设置为None(不推荐)。
一般使用下图:
在这里插入图片描述

5.Optimize Mesh Data

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

总结

好记性不如烂笔头!
上一章:链接: Unity 性能优化之图片优化(八)
下一章:链接: Unity 性能优化之LOD技术(十)


网站公告

今日签到

点亮在社区的每一天
去签到