この手順は、MicroProfilerを使用してゲームの問題のある側面を見つけ、その根本原因を特定する方法を示します。ゲームをダウンロードし、スタジオでファイルから開くを選択し、続けてください。
問題を特定する
スタジオでゲームを開いたら、F5またはプレイボタンを押してテストを開始します。
フレームレートはそこそこ良いように感じますが、このサイズとスコープのゲームとしては滑らかさに欠けています。CtrlShiftF5(⌘ShiftF5)を押してパフォーマンス概要のオーバーレイを表示します。

フレームレートが毎秒60フレーム(FPS)未満であることに注意してください。
CtrlAltF6(⌘⌥F6)を押してMicroProfilerを開きます。

フレーム時間が一貫していることに注意してください。棒の高さはほぼ同じです。つまり、低いフレームレートの原因は、フレームごとに毎回実行されていることを示しています。
CtrlP(⌘P)を押してMicroProfilerを一時停止します。キーボードショートカットでの一時停止はdetailed modeを開きます。
グラフをパンするためにクリック&ドラッグします。ワーカースレッドの特定のタスクがメインスレッドと比較して多くの処理時間を使用していることに注意してください。RunService.Steppedにホバーして、レンダリングにどれだけ時間がかかっているかを確認します。

タイムラインの積み重なった棒はコードの階層を示していますので、問題を特定するために低いレイヤーにホバーし続けます。


スクリプトの名前を示すLocalScriptラベルと、レイキャスティングに関連する可能性があることを示すRaycastラベルに注意してください。
トラブルシューティングラベルを作成する
MicroProfilerがスタート地点を提供したので、問題のあるコードをトラブルシュートできます。
プレイテストを停止し、エクスプローラーウィンドウで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
問題を確認して修正する
ゲームのテストを開始し、MicroProfilerを再度開きます。
MicroProfilerがカスタムラベルを表示しており、この関数が実際に根本原因であったことに注意します。

プレイテストを停止します。
onStepped()関数とRunService.Stepped:Connect(onStepped)の接続を削除またはコメントアウトします。
再度ゲームのテストを開始し、もう一度パフォーマンス概要を確認します。

フレームレートの大幅な改善とMicroProfilerグラフ上のフレーム時間の対応する減少に注意してください。