微型分析器走過

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

這個示例展示了如何使用微處理器找到體驗中的問題,並識別根本原因。下載體驗, 從樣本文件 在 Studio 中開啟,然後跟隨。


識別問題

  1. 在 Studio 中開啟體驗後,使用 F5播放 按鈕來測試。

  2. 圖像 速度感覺很好,但不像應該的那麼平滑。 導航到 檢視 標籤,然後單擊摘要在1>統計1>下。

    Debug stats summary showing 45 FPS.

    注意,幀率小於 60 幀/秒 (FPS)。

  3. 按下 CtrlAltF6 ( 1> ⌥1> 3> F63> ) 來開啟微處理器。

    The MicroProfiler after opening it.

    注意, 畫框時間是一致的 — 畫條大概相同的高度—所以導致低畫框率的原因是每個畫框執行單個畫框而不是每次導致框架時間延遲。

  4. 按下 CtrlP (P) 暫停微處理器。按下滑鼠快捷鍵會打開 2>詳細模式2>。

  5. 單擊並拖曳圖形。注意一個特定的任務在工作者線程中使用大量處理時間,相較於主執行緒。將鼠標放在 RunService.Stepped 上,並注意它所需的時間來成像。

    Detailed mode with long labels for processes.
  6. 在時間條中堆疊的條狀表示代碼階層,因此請保持在下層和下層移動,以嘗試找到問題。

    On-hover details for various processes, with LocalScript highlighted. On-hover details for various processes, with Raycast highlighted.

    注意 LocalScript 標籤,表示指令碼的名稱,並且 Raycast 標籤,表示可能與雷射投射有關。

創建問題標籤

現在微處理器提供了一個開始點,您可以排查問題的代碼。

  1. 停止播放測試並過濾 Explorer 窗口,以尋找 localscript 檔案。

    A view of filtering in the Explorer window.

    搜尋結果指出這個部分代碼可能是導致這個體驗糟糕性履約的原因:raycast


    local RAYS_PER_SECOND = 1500
    local function onStepped()
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    end
    RunService.Stepped:Connect(onStepped)

    更具體地,您可以看到代碼正在隨機方向施放 1,500 個射線。

  2. 要確認這個部分的代碼是否導致延遲,請將 debug.profilebegin()debug.profileend() 包含在功能中:


    local function onStepped()
    debug.profilebegin("Raycast Spam")
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    debug.profileend()
    end

確認和修復問題

  1. 開始測試體驗,然後再次打開微型分析器。

  2. 注意微處理器現在會顯示自訂標籤,表示此功能確實是根因。

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. 停止遊戲測試。

  4. 刪除或評論 onStepped() 函數和 RunService.Stepped:Connect(onStepped) 連接。

  5. 再次開始測試體驗,並重新檢查測試結果。

    Debug stats summary showing 60 FPS.

    注意微處理器圖形的高速掃描和對應的減少時間。