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...
2.2k 2 分钟

通过 Stats 窗口可以初步查看游戏运行时,当前一帧的各项性能。 Stats 是英文单词 Statistics 的缩写,意思是 “统计数据”。 打开方法:Game 窗口右上角,找到 Stats,点击它。 # Unity 绘制调用(Draw Call)、批次(Batch) 要将游戏中的物体显示到屏幕上,就需要绘制它们。绘制之前,会先由 CPU 计算出它们的位置、颜色等信息,然后发送绘制指令给 GPU。GPU 接受到 CPU 发过来的绘制指令,就会按照要求绘制东西在屏幕上。 Draw Call 是指 CPU 向 GPU 发送绘制指令的过程,一个 Draw Call 就是 CPU 向 GPU...
2.2k 2 分钟

STM32F1 系列标准库压缩包文件:STM32F10x_StdPeriph_Lib_V3.5.0 # 新建工程步骤总结 建立工程文件夹,Keil 中新建工程,选择型号 工程文件夹里建立 Start、Library、User 等文件夹,复制固件库里面的文件到工程文件夹 工程里对应建立 Start、Library、User 等同名称的分组,然后将文件夹内的文件添加到工程分组里 工程选项,C/C++,Include Paths 内声明所有包含头文件的文件夹 工程选项,C/C++,Define 内定义...