マイクロプロファイラのウォークスルー

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

このウォークスルーでは、MicroProfiler を使用してエクスペリエンスの問題の側面を見つけ、根本原因を特定する方法を示します。エクスペリエンスをダウンロードし、 ファイルから開く をStudio で開き、続行します。


問題を特定する

  1. Studio でエクスペリエンスを開いた後、F5 または プレイ ボタンでテストを開始します。

  2. フレームレートは悪くないが、このサイズとスコープの経験にふさわしいほど滑らかではない。ナビゲート to the ビュー tab and click 概要 under 統計 .

    Debug stats summary showing 45 FPS.

    フレームレートは 60FPS 以下であることに注意してください。

  3. Open the MicroProfiler by pressing Ctrl Alt F6 ( F6 ).

    The MicroProfiler after opening it.

    フレーム時間は 一貫性がある —バーは大体同じ高さです—なので、低フレームレートを引き起こしているものは、時折実行してフレーム時間のスパイクを引き起こすのではなく、すべてのフレームを実行しています。

  4. Pause the MicroProfiler by pressing Ctrl P ( P ).キーボードショートカットで一時停止すると、詳細モード が開きます。

  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. プレイテストを停止し、エクスプローラーウィンドウを 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. エクスペリエンスのテストを開始し、MicroProfiler を再度開きます。

  2. マイクロプロファイラが今どのようにカスタムラベルを表示しているか注意してください、これはこの機能が本当に根本原因であったことを示しています。

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. プレイテストを停止する。

  4. onStepped() 機能と RunService.Stepped:Connect(onStepped) 接続を削除またはコメントアウトします。

  5. もう一度エクスペリエンスのテストを開始し、デバッグステータスの概要を再確認します。

    Debug stats summary showing 60 FPS.

    マイクロプロファイラグラフにおけるフレームレートと対応するフレーム時間の大幅な向上を注意してください。