場景分析工具提供一套在Roblox Studio中的視圖,讓你一目了然地比較客戶端和伺服器場景的組成、所使用的資源以及哪些實例負責這些資源的使用。場景分析旨在於遊玩和測試會議期間使用,可以檢查客戶端和伺服器數據模型。

啟用場景分析
在菜單欄中,選擇 窗口 > 性能摘要 > 場景分析。
使用場景分析
場景分析旨在於遊玩或測試期間使用。打開場景分析窗口,瀏覽可用的模式。當一個模式啟動時,你會看到一個方框的顯示——方形樹圖視圖——顯示所查看資源的相對大小以及為這些資源做出貢獻的實例。
- 在方形樹圖視圖下方是一個當前視圖中所有項目的列表。
- 在場景分析中右鍵單擊選定的項目通常讓你可以直接跳轉到Explorer中的該項目。
- 你可以使用搜索欄根據名稱過濾當前顯示的內容。
模式
場景分析有許多不同的模式,每一種模式都滿足不同的用例。
腳本內存
此視圖顯示每個 Script、LocalScript 和 ModuleScript 在Luau VM中使用的內存量。這是由表和其他腳本分配使用的內存,而不是由如動畫、紋理和聲音等資產使用的內存。該視圖進一步按腳本執行的常見位置以及 Script 與 ModuleScript 進行細分。
未父級實例
未父級實例視圖顯示哪些腳本和模組持有實例的引用,以類型計數的形式列出。
腳本持有對實例的引用是正常的,並不單獨表示存在錯誤或內存洩漏。然而,如果你正在調查內存洩漏,這個視圖能輕鬆發現腳本是否在做出你未預期的事情。
如果你仍然在尋找內存洩漏的根本原因,這個工具與Luau 堆工具是互補的,後者可以為你提供有關個別分配的更多信息。
在此視圖中右鍵單擊任何腳本,可以直接在Explorer中選擇。
實例組成
實例組成視圖顯示當前在客戶端或伺服器上存在的實例。這對於處理大型和複雜的構建非常重要,因為每個實例都有複製和內存成本。
例如,角色、幾何和紋理等類別旨在幫助你理解場景的平衡。比如,你可能並不打算擁有25,000個粒子發射器,但這個視圖讓你知道。
此視圖還使選擇所有給定類型的實例變得簡單。
音頻內存
音頻內存視圖顯示每個音頻資產當前消耗的內存。給定音頻曲目使用的實際內存相當複雜,但在實際操作中,刪除所有引用某個音頻曲目的實例可以讓該內存卸載。
在此視圖中任何音頻資產上右鍵單擊以選擇所有使用它的實例。
動畫內存
動畫資產是製作中最常見的內存洩漏來源之一。Roblox會積極地卸載未使用的動畫資產,但腳本在其父模型被銷毀後,通常會繼續保持動畫存活。
與音頻資產一樣,刪除所有引用動畫資產的實例可以使其卸載。
這個視圖與未父級實例視圖結合,方便追踪動畫的生命週期以及它們實際使用的內存量。
在此視圖中右鍵單擊任何動畫以選擇所有使用它的實例。
三角形組成
三角形組成視圖為你提供當前在主視口中渲染的三角形和繪製調用的更詳細細分。
這些細分包含陰影、不透明、透明、地形、草、粒子、天空和UI的計數。
這些組成信息幫助你更好地理解你的場景幾何是如何構成的,並識別場景中包含意外幾何的情況。
引擎API
你也可以通過 SceneAnalysisService 以編程方式訪問場景分析數據,該服務通過MCP伺服器進行公開。每個方法返回包含嵌套子項的表,這些子項與視覺顯示所使用的數據相同。
| 方法 | 描述 |
| GetInstanceCompositionAsync | 返回來自 DataModel 樹的每類別和類別的實例計數。 |
| GetScriptMemoryAsync | 返回每個腳本的Luau VM堆內存用量(以字節為單位)。 |
| GetUnparentedInstancesAsync | 返回Luau持有但不再在 DataModel 中的實例,按主腳本分組。 |
| GetTriangleCompositionAsync | 返回按渲染通道劃分的三角形和繪製調用計數。 |
| GetAnimationMemoryAsync | 返回加載的動畫剪輯內存,根據剪輯去重。 |
| GetAudioMemoryAsync | 返回加載的音頻資產內存,根據資產ID去重。 |