MicroProfiler のウォークスルー

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

このウォークスルーでは、MicroProfiler を使用してエクスペリエンスの問題を見つけ、根本原因を識別する方法を示しています。エクスペリエンスをダウンロードし、 ファイルから開く を Studio で、次に進みましょう。


問題を識別する

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

  2. フレームレートはこのサイズとスコープのエクスペリエンスにふさわしいものですが、ビュー タブに移動し、概要 をクリックして、統計 の下で 2>ビュー2> をクリックします。

    Debug stats summary showing 45 FPS.

    フレームレートは 1 秒あたり 60 フレーム以下 (FPS) です。

  3. MicroProfiler を開くには、CtrlAltF6 (1> ⌥1> 3> F63>) を押します。

    The MicroProfiler after opening it.

    フレームタイムが 一貫性がある — バーは扇型の高さで揃えられているので、低フレームレートを引き起こす原因は、毎秒フレームを実行するたびに毎フレームのバーの高さが一致するため、フレーム時間のスパイクを引き起こすことはありません。

  4. Pause the MicroProfiler by pressing Ctrl P ( P ). Pause with the keyboard shortcut opens 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 ラベルを注意してください。これは、問題がレイキャストに関連している可能性があることを示しています。

トラブルシューティングラベルを作成する

MicroProfiler が開始ポイントを提供したので、問題のコードをトラブルシューティングできます。

  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 秒あたり 1,500 個のレイをランダムな方向にキャストしていることがわかります。

  2. このコードのレンダリング遅延を引き起こしていることを確認するには、debug.profilebegin()debug.profileend() のコンテンツを Library. debug. profilenoct でラップします:


    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 がカスタムラベルを表示するようになりました。これは、この関数が実際に根本原因であることを示すことです。

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

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

  5. エクスペリエンスを再びテストし、デバッグステータスの概要を再びチェックします。

    Debug stats summary showing 60 FPS.

    MicroProfiler グラフにおけるフレームレートとフレームタイムの大幅な改善に注意してください。