场景分析工具提供了一套视图在Roblox Studio中,以便您一目了然地比较客户和服务器场景是如何构建的,它们使用了哪些资源,以及哪些实例对这些资源使用负有责任。场景分析旨在在游戏播放和测试会话期间使用,并且可以检查客户端和服务器数据模型。

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