3.2k 3 分钟

# 代码优化 == 使用 AssetBundle 作为资源加载方案。== 而且经常一起使用的资源可以打在同一个 AssetBundle 包中。尽量避免同一个资源被打包进多个 AB 包中。 压缩方式尽量使用 LZ4,少用或不要用 LZMA 的压缩方式。如果确定后续开发不会升级 Unity 版本,则可以尝试启用打包选项 BuildAssetBundleOption.DisableWriteType,这样 TypeTree 信息不会被打到 AB 包中,可以极大减小包体大小以及运行加载时的内存开销。 使用 AssetBundle 或者 Addressables...
1.9k 2 分钟

# 合并网格(Mesh Combine) 对使用相同材质的模型可以使用第三方插件(例如:Easy Mesh Combine Tool)合并网格 合并后,所有被合并的模型被整合成一个新的模型,DrawCall 和 Shader Caster 会下降,但顶点个数和三角面个数可能会增多,所以需要根据实际情况来使用 # 动画优化 恰当地设置 Animator 组件的 Culling Mode。 Always Animate 表示如果该动画不可见,也会播放它。 Cull Update Transformations...
1.8k 2 分钟

# UI 优化 尽量避免使用 IMGUI 来做游戏时的 UI,因为 IMGUI 的开销比较大。 如果一个 UGUI 的控件不需要进行射线检测,则可以取消勾选 Raycast Target。 尽量避免使用完全透明的图片和 UI 控件。因为即使完全透明,我们看不见它,但它仍然会产生一定的性能开销。如果 UI 中一定要用到很多张完全透明的图片,则建议把这些完全透明的图片由单独的摄像机进行渲染,且这些 UI 不要叠加到场景摄像机的渲染范围内。 尽量避免 UI 控件的重叠。如果多个 UI...
1.9k 2 分钟

# 光照优化 减少不必要的光源的使用,调节好每个 Light 组件的属性,平衡视觉效果和游戏性能。 优先考虑使用烘焙光照或者混合光照,此时可以配合光照探针使用。Lighting 窗口可以设置烘焙光照的参数。减少启用的阴影投射。 根据摄像机距离光源的距离,用脚本来决定是否启用光源和阴影。但是这样就会花费一些性能来计算摄像机到光源的距离。 可以考虑设置光照的阴影。无阴影的性能最好,硬阴影的性能稍差,软阴影的视觉效果最好,但是性能是这三者中最差的。 备注:光照和阴影最影响项目的性能,其次才是模型网格和贴图。把实时光照改成烘焙光照,可以使游戏性能大幅度增加。 注意 MeshRenderer...
2.6k 2 分钟

正常情况下,如果一个障碍物 A 挡住了后面的物体 B,虽然我们看不见物体 B,但是 Unity 仍然会消耗性能来渲染这个物体 B。这样 CPU 和 GPU 就会有一部分性能白白浪费在渲染物体 B 身上。 如果想在一个障碍物挡住了后面的物体后,不渲染被挡住的物体,则可以使用遮挡剔除。 官方文档:https://docs.unity3d.com/cn/current/Manual/OcclusionCulling.html 以一堵墙挡住几个小球为例,选中这堵墙,在 Inspector 窗口右上角的 Static 右侧的下拉菜单处选择 Occluder...
3k 3 分钟

# 静态合批 静态合批也叫静态批处理,是 Unity 的一种优化技术。 对于始终静止不动的物体使用静态合批后,CPU 会把它们合并为一个批次发送给 GPU 处理,这样可以减少 Draw Call 带来的性能消耗,从而提升游戏性能。 官方文档:https://docs.unity3d.com/cn/current/Manual/static-batching.html 要使用静态合批,必须确保 Edit——Project Settings——Player——Other Settings——Static Batching 是勾选的。 把一个物体设置为静态的方法: 选中该物体,点击在...
2.5k 2 分钟

# 前言 最近学了一个照片溶解特效,感觉很炫酷,也可以作为后续项目花里胡哨的基础,便在此将学习过程记录一下吧~ 话不多说,先看看最终效果~ # 创建和配置项目 选择 3D(URP)项目,然后点击 Create Project 即可创建项目。 打开 Unity,File-->Build Settings, 选择 Android,点击 Switch Platform 在 Build Settings 窗口中,选择 Player Settings, 然后按照下面对应的设置进行配置 # 导入 NRSDK 将 NRSDKForUnity_Release_1.10.2 拖入到...
7.8k 7 分钟

# Unity Frame Debugger 窗口(帧调试器窗口) Frame Debugger 窗口也叫帧调试器窗口,用于查看每一帧的画面是如何渲染出来的,可以详细查看这一帧的绘制过程。 打开 Frame Debugger 面板的方式: Window——Analysis——Frame Debugger 按下 “Enable”,则会启动帧调试,此时如果运行了游戏,则会自动暂停,然后当前这帧的渲染情况可以在这个窗口中查看。 上方的 X of X 表示绘制过程中有多少步,可以查看下一步或上一步。 如果要禁用帧调试,可以按下 “Disable”。 用 Frame Debugger...
4.7k 4 分钟

Profiler 窗口就是性能分析器的窗口,用来详细分析游戏性能。 打开 Profiler 窗口的方法: Window——Analysis——Profiler Ctrl+7 使用性能分析器进行分析时,其自身也是会消耗性能的。如果想获得更加准确的数据,可以使用独立性能分析器,即 Profiler (Standalone Process)。 打开 Profiler (Standalone Process) 窗口的方法: Window——Analysis——Profiler(Standalone Process) 独立性能分析器的运行不会影响收集的数据,因此可以获得更加准确的数据。它的用法和...
938 1 分钟

# 垂直同步 垂直同步用于将游戏的帧率限制为显示器的刷新率,可以防止游戏画面在高速移动时的画面撕裂现象,使游戏画面更加平滑和连贯。 如果不启用垂直同步,当游戏的帧率高于显示器的刷新率时,图像的一部分可能会在显示器刷新之前更新,导致画面上出现明显的断裂线。而启用垂直同步后,图形处理器会等待显示器完成一次完整的刷新,然后再发送下一帧图像,确保每个图像帧都在刷新之前完全绘制,从而消除了撕裂现象。 简单理解的话,当显示器比如说要渲染 A 帧画面时,渲染到一半,由于游戏的帧率高于显示器的刷新率,所以 A...