建置比較能告訴你影格時間等效能指標變差了多少。要繼續排查,還需要知道這種變化是在地圖的什麼位置觀測到的。
Framedash 的熱區圖一直會在儀表板的地圖圖片上顯示這個「在哪裡」。從 2026-07-24 的 Unity、Unreal Engine 5 和 Godot (C#) SDK 更新開始,同一批彙總格子也能顯示在編輯器中。無需關閉關卡,就可以將效能資料以半透明 3D 體素疊加到實際關卡結構上。
將彙總後的效能資料以 3D 形式疊加在關卡上
每一個體素就是一個伺服器彙總出來的格子,放在遙測記錄下來的世界座標上。編輯器會向 API 要求 XYZ 彙總,所以帶有實測 z 的格子會以那個高度為中心畫成一個半透明的方塊,而不是貼在地面上的一片色塊。
這個差別正是這次更新的重點。平面網格會將上下重疊的空間合在一起:例如,在陽台和下方中庭量到的數值可能落進同一個格子,經過平均後不再顯眼。保留高度資訊後,就能分辨哪一層的數值較高。沒有 z 的舊 API 回應仍舊會以地圖底面高度的平面格子顯示,所以在轉換途中也不會突然什麼都看不見。
三個編輯器共用一套從藍到紅的五段配色。顏色以回應中最大的那個格子做正規化,所以紅色代表的是「這次取回來的範圍裡最差的格子」,而不是一個固定閾值。Unity 的覆蓋層控制項和 Godot 的面板都會在圖例旁邊列出格子數與最大值。到底是真的重,還是一張安靜的地圖裡相對偏紅,就靠這兩個數字來分辨。一次要求最多回傳 API 上限的 10,000 個格子。
這不是重播本機的擷取檔,而是取回雲端已經彙總好的結果再畫出來。
每個引擎怎麼打開
三個編輯器都用帶 analytics:read 權限的唯讀 API 金鑰加專案 ID 來讀資料。它和遊戲傳送事件時使用的唯寫收集金鑰分開。編輯器只取得讀取彙總結果所需的權限,從而避免誤寫資料、污染比較結果。如果不想把金鑰填進專案,就在啟動編輯器之前設好 FRAMEDASH_ANALYTICS_API_KEY。三個 SDK 都會把它當成備援值讀取,只在當前編輯器行程裡使用,而且不做保存;明確設定過的金鑰仍然優先。
Unity:SceneView 覆蓋層
打開 Window > Framedash Heatmap,填好唯讀 API 金鑰和專案 ID,重新整理地圖清單,選一張地圖,按 Fetch。不需要進 Play 模式。
之後 SceneView 上會多出一個 Framedash Heatmap 覆蓋層,帶 Show、Frame、Controls 三個動作。Frame 會把 SceneView 對準已載入資料的範圍,在大關卡裡省下不少找地方的工夫。關掉控制項視窗,覆蓋層本身不會跟著消失。所選地圖和覆蓋層開關會依專案保存;控制項視窗開著時遇到腳本重新載入,它會還原地圖清單並重新取一次資料。Play 模式期間顯示會暫停,離開後只要開關還開著就會回來。
座標直接沿用 Unity 的 Vector3:遙測的 X/Y/Z 對應 SceneView 的 X/Y/Z,不做地面軸的重新對應。Z Offset 只在你想刻意平移顯示位置時才用,它不會改寫雲端座標。
這個覆蓋層本身是 2026-07-17 的 Unity SDK 0.1.4 以平面四邊形的形式加進來的,2026-07-24 的 0.1.7 才變成體素。
Unreal Engine 5:依視口的顯示旗標
UE5 SDK 0.1.13 把取資料和顯示拆開了。Window > Framedash > Framedash Heatmap 是取資料的面板,在 PIE 之外取。顯示交給每個關卡視口各自的 Show > Framedash Heatmap 旗標,預設關閉,而且跨視口版面配置彼此獨立。於是你可以讓一個視口保持乾淨用來編場景,另一個開著熱區圖當參照。關掉取資料的面板,正在顯示的熱區圖不會消失。
因為視覺化是走編輯器場景的主算繪階段,標準的 F9 和高解析度視口截圖都會把熱區圖一起拍進去。按一次 F9,就能產生可附在問題單中的截圖。Play In Editor 期間顯示會暫停,播放結束後還原你原本的視口選擇。
雲端體素會依顏色批次處理,並從冷色到暖色依序繪製,高負載的格子不會被蓋住;整個過程也不跑逐格碰撞追蹤。API URL、專案 ID、唯讀金鑰、不透明度、對齊和 Z 偏移都在 Project Settings > Plugins > Framedash Heatmap 底下。
Godot (C#):編輯器面板
在 Godot SDK 0.1.8 裡,啟用外掛會給編輯器加一個 Framedash Heatmap 面板。填入唯讀金鑰、專案 ID 和 API 基礎 URL,選好時間範圍和格子大小,按 Refresh Maps。選一張地圖,執行 Fetch Heatmap,打開 Show,再用 Frame Heatmap 把 3D 編輯器的攝影機對準資料。
最多 10,000 個格子會畫成一整塊已快取的半透明體素網格,而不是每格一個節點或一次物理追蹤。除了 Show 和 Frame,還有不透明度、Z 偏移,以及事件、時間、格子的篩選,外加圖例、格子數和最大值。設定保存在 Godot 依專案的編輯器中繼資料(.godot/editor/editor_layout.cfg)裡,不在 project.godot,所以記得把 .godot/ 排除在版本控制之外。編輯器在轉送唯讀金鑰之前會擋下重新導向,遊戲執行期間隱藏覆蓋層,播放結束後再還原。所有熱區圖程式碼都由 TOOLS 守衛,因此它和唯讀金鑰都不會進入匯出後的遊戲。
靠你已經在送的遙測就能跑
這件事不需要重新埋一遍點。格子的原料是帶位置的事件,也就是你帶著非空 map_id 送出去的事件;前提只有一條,那張地圖已經在儀表板裡註冊過。自動的 perf_heartbeat 的 map_id 是空的,也沒有位置,所以單靠它進不了空間網格。
能放到地圖上的指標是 FPS、影格時間、GPU 時間和記憶體用量。記憶體之所以能按格子看,是因為 SDK 不只把記憶體類指標掛在心跳上,也掛在帶位置的事件上。2026-07-17 的 Unity 0.1.4 加入 mem.vram 和 mem.heap,為的正是這件事。攝影機旋轉的記錄預設開啟,每個事件還會帶上偏航和俯仰,於是格子詳情裡可以按「當時朝哪邊看」把一個熱點拆開。
兩種檢視回答的問題不一樣。用儀表板比較建置和平台,用編輯器將效能下降的位置與關卡結構對照起來。體素顯示的是數值被觀測到的位置,不能直接證明原因。可以從這裡開始檢查附近的算繪負載、指令碼和資源。發布前也能保持關卡開啟,直接查看這次建置所修改區域的熱區圖。
如何開始
如果你的遊戲已經帶著地圖 ID 在送遙測,那只要更新 SDK 再建一把唯讀金鑰就行。如果還沒有,SDK 整合大概 5 分鐘,第一張熱區圖在 Free 方案上就能看到。