本指南向您展示如何使用微型調試器來找到體驗中的問題方面,並識別根源。下載體驗, 從檔案中開啟 在工作室,然後繼續。
識別問題
在 Studio 中開啟體驗後,開始使用 F5 或 播放 按鈕進行測試。
按下 Ctrl Alt F6 ( ⌘ ⌥ F6 ) 開啟微型調試器。
請注意,框架時間是 一致 —條形狀大約相同高度 —所以任何造成低幀率的原因都會運行每一個幀,而不是偶爾運行並導致幀時間波動。
按下 Ctrl P ( ⌘ P ) 暫停微型調試器。使用快捷鍵暫停開啟詳細模式。
按一下並拖曳以移動圖表。注意工作者線程中的一個特定任務似乎使用了大量的處理時間,比主執行緒多。將鼠標懸停在 RunService.Stepped 上,注意成像所需的時間。
時間線中的堆疊條指示代碼的階層,因此繼續徘徊在較低和較低層級上以嘗試識別問題。
注意 LocalScript 標籤,該標籤表示腳指令碼名稱,以及 Raycast 標籤,該標籤表示問題可能與射線投射有關。
創建故障排除標籤
現在微型調試器提供了起點,您可以解決問題的代碼。
停止播放測試並過濾 Explorer 窗口以 localscript 尋找文件。
搜尋 raycast 表示這段代碼可能是體驗表現糟履約的原因:
local RAYS_PER_SECOND = 1500local function onStepped()for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)endendRunService.Stepped:Connect(onStepped)特別是,你可以看到代碼每秒鐘在隨機方向投射 1,500 光束。
要驗證這部分代碼導致渲染延遲,請用 debug.profilebegin() 和 debug.profileend() 包裝函數的內容:
local function onStepped()debug.profilebegin("Raycast Spam")for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)enddebug.profileend()end
確認並修復問題
開始測試體驗,然後再次開啟微型調試器。
注意微型調試器現在顯示了自定義標籤,表示這個功能確實是根本原因。
停止播放測試。
刪除或評論 onStepped() 功能和 RunService.Stepped:Connect(onStepped) 連接。
再次開始測試體驗,並再次檢查調試統計摘要。
注意微調器圖上框架速率和對應的框架時間的巨大改善。