このウォークスルーでは、MicroProfiler を使用してエクスペリエンスの問題を見つけ、根本原因を識別する方法を示しています。エクスペリエンスをダウンロードし、 ファイルから開く を Studio で、次に進みましょう。
問題を識別する
Studio でエクスペリエンスを開いた後、F5 または プレイ ボタンでテストを開始します。
フレームレートはこのサイズとスコープのエクスペリエンスにふさわしいものですが、ビュー タブに移動し、概要 をクリックして、統計 の下で 2>ビュー2> をクリックします。
フレームレートは 1 秒あたり 60 フレーム以下 (FPS) です。
MicroProfiler を開くには、CtrlAltF6 (⌘1> ⌥1> 3> F63>) を押します。
フレームタイムが 一貫性がある — バーは扇型の高さで揃えられているので、低フレームレートを引き起こす原因は、毎秒フレームを実行するたびに毎フレームのバーの高さが一致するため、フレーム時間のスパイクを引き起こすことはありません。
Pause the MicroProfiler by pressing Ctrl P ( ⌘ P ). Pause with the keyboard shortcut opens 2>詳細モード2> .
クリックしてグラフをパンします。一つのワーカースレッドで特定のタスクがメインスレッドよりも多くの処理時間を使用しているように注意してください。 RunService.Stepped の上にマウスポイントし、レンダリングにかかる時間を注意します。
時間軸にあるスタックされたバーは、コードの階層を表示します。ですから、下のバーをホバーして問題を特定するために、より低いレイヤーを持っている必要があります。
スクリプトの名前と、LocalScript レーベルを指す Raycast ラベルを注意してください。これは、問題がレイキャストに関連している可能性があることを示しています。
トラブルシューティングラベルを作成する
MicroProfiler が開始ポイントを提供したので、問題のコードをトラブルシューティングできます。
プレイテストを停止し、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 秒あたり 1,500 個のレイをランダムな方向にキャストしていることがわかります。
このコードのレンダリング遅延を引き起こしていることを確認するには、debug.profilebegin() と debug.profileend() のコンテンツを Library. debug. profilenoct でラップします:
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
問題を確認して修正する
エクスペリエンスを開始し、MicroProfiler を再び開きます。
MicroProfiler がカスタムラベルを表示するようになりました。これは、この関数が実際に根本原因であることを示すことです。
プレイテストを停止します。
onStepped() 関数と RunService.Stepped:Connect(onStepped) 接続を削除またはコメントします。
エクスペリエンスを再びテストし、デバッグステータスの概要を再びチェックします。
MicroProfiler グラフにおけるフレームレートとフレームタイムの大幅な改善に注意してください。