场景分析工具提供了一套在 Roblox Studio 中的视图,使您能够快速比较客户端和服务器场景的构成、正在使用的资源以及哪些实例负责这些资源的使用。场景分析旨在在游戏和测试会话期间使用,可以检查客户端和服务器的数据模型。

启用场景分析
- 在 文件 > 新功能 中启用 场景分析。
- 在菜单栏中,选择 窗口 > 性能摘要 > 场景分析。
使用场景分析
场景分析旨在在游戏或测试会话期间使用。打开场景分析窗口并浏览可用模式。当某种模式处于活动状态时,您会看到一个方框显示—方形树图视图—显示所查看资源的相对大小及其贡献的实例。
- 在方形树图视图下方是当前视图中所有项目的列表。
- 在场景分析中右键单击所选项目通常可以直接跳转到资源管理器中的该项目。
- 您可以使用搜索栏在当前显示中按名称进行筛选。
模式
场景分析有许多不同的模式,每种模式都针对不同的使用案例。
脚本内存
该视图显示每个 Script、LocalScript 和 ModuleScript 在 Luau 虚拟机中使用的内存。这是由表和其他脚本分配使用的内存,而不是由动画、纹理和声音等资产使用的内存。该视图进一步按照脚本执行的常见位置和 Script 与 ModuleScript 的区别进行细分。
未嵌套实例
未嵌套实例视图显示哪些脚本和模块持有对实例的引用,以每种类型的计数显示。
脚本持有对实例的引用是正常的,并不能单独表明存在错误或内存泄漏。然而,如果您在调查内存泄漏,这个视图可以轻松识别脚本是否在执行您未预期的操作。
如果您仍然难以找到内存泄漏的根本原因,这个工具可以作为 Luau 堆 工具的补充,它可以为您提供有关个别分配的更多信息。
右键单击此视图中的任何脚本可直接在资源管理器中选择它。
实例组成
实例组成视图显示当前在客户端或服务器上存在的实例。这在处理大型和复杂的构建时是无价的,因为每个实例都有复制和内存成本。
类别,如角色、几何和纹理,旨在帮助您理解场景的平衡。例如,也许您不打算有 25,000 个粒子发射器,但这个视图让您知道。
此视图还可以轻松选择某一类型的所有实例。
音频内存
音频内存视图显示每个音频资产当前消耗的内存。特定音频轨道使用的实际内存非常复杂,但在实际操作中,删除所有引用音频轨道的实例允许那部分内存卸载。
在此视图中右键单击任何音频资产可以选择所有使用它的实例。
动画内存
动画资产是生产中最常见的内存泄漏来源之一。Roblox 会主动卸载未使用的动画资产,但脚本保持动画在其父模型被销毁后仍然存活是很常见的。
与音频资产一样,删除所有引用动画资产的实例允许它卸载。
此视图与未嵌套实例视图一起,可以轻松跟踪动画的生命周期及它们实际使用的内存量。
在此视图中右键单击任何动画可以选择所有使用它的实例。
三角形组成
三角形组成视图为您提供主视口中当前被渲染的三角形和绘制调用的更详细细分。
这些细分包括阴影、不透明、透明、地形、草、粒子、天空和用户界面等的计数。
这些组成信息帮助您更好地理解场景几何的组成,并识别场景中包含意外几何的情况。
引擎 API
您还可以通过 SceneAnalysisService 以编程方式访问场景分析数据,该服务通过 MCP 服务器 提供。每个方法都会返回包含嵌套子项的表,这些子项包含与可视化显示使用相同的数据。
| 方法 | 描述 |
| GetInstanceCompositionAsync | 从 DataModel 树中返回按类别和类的实例计数。 |
| GetScriptMemoryAsync | 返回以字节为单位的每个脚本的 Luau 虚拟机堆内存使用情况。 |
| GetUnparentedInstancesAsync | 返回由 Luau 持有但不再在 DataModel 中的实例,按主脚本分组。 |
| GetTriangleCompositionAsync | 返回按渲染通道的三角形和绘制调用计数。 |
| GetAnimationMemoryAsync | 返回按剪辑去重的加载动画剪辑内存。 |
| GetAudioMemoryAsync | 返回按资产 ID 去重的加载音频资产内存。 |