「AIに書いてもらったスクリプトを入れたのに、何も起きない」「赤い文字が出ているけど、どこを直せばいいか分からない」
ロブロックス(Roblox)スタジオでスクリプトが動かないときの確認手順を、実際の画像付きで誰でも簡単に分かるように解説します。動かない原因は、「出力のメッセージ」「どこまで動いたか」「置き場所と種類」の3つを順番に見ると、ほとんど見つけられます。
入門ステップ6/24 前の記事:ロブロックス(Roblox)スクリプトの作り方 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、動かないスクリプトが入った作品。スクリプトの入れ方はスクリプトの作り方で解説しています。

症状から最初に見るところを選ぶ
| 症状 | 最初に見るところ |
|---|---|
| 何も起きず、出力にも何も出ない | スクリプトが無効になっていないか、置き場所、テストのやり方 |
| 赤い文字が出る | 赤い文字の内容と、何行目か |
| オレンジ色の「Infinite yield possible」が出る | コードのWaitForChild(部品が出てくるまで待つ命令)で、部品を待ち続けているときに出る警告。待っている部品の名前と場所が、エクスプローラと合っているか(手順2と同じ考え方) |
| メッセージは出るのに見た目が変わらない | 変えている部品が正しいか(printで確かめる) |
直す前に、今の作品を残しておきます。3D画面上部メニューの「ファイル」を押し、「ファイルに保存」(赤い枠)を押してパソコンに保存しておきます。こうしておくと、直している途中でおかしくなっても戻せるので安心です。画像の赤い枠が「次に押す場所」で、画像を押すと大きく表示できます。ボタンの名前や置き場所は、Roblox側の更新で変わることがあります。

1. 出力を開いて、メッセージを隠していないか確かめる
出力は、スクリプトからのメッセージやエラーが出る場所です。画面の下に見当たらないときは、3D画面上部メニューの「ウィンドウ」を押し、一覧から「出力」(赤い枠)を押します。

出力の左上には、出すメッセージを選ぶ2つの絞り込みがあります。左の「すべてのメッセージ」を押すと、エラー・警告・情報などのチェックが出ます(赤い枠)。ここでエラーのチェックが外れていると、赤い文字が出ていても見えません。

右の「すべてのコンテキスト」では、クライアント(状態を見せてもらい、操作を送る側)とサーバー(ゲームの正しい状態を持っている側)のどちらのメッセージを出すかを選べます。迷ったら、全部にチェックが入った状態にしておきます。

2. 赤いエラーを読む
練習として、わざとエラーを出してみましょう。練習は自分の作品とは別に行います。Studioのホーム画面の左の「テンプレート」から「Baseplate」を選び、新しいBaseplateを開きます。
まず、部品を入れるフォルダーを作ります。エクスプローラの「Workspace」にマウスを乗せて、右に出る「+」を押し、一覧から「Folder」を押します。
エクスプローラにできた「Folder」を選んでF2キーを押し、名前を「Stage」に変えます。
次に、エクスプローラの「Stage」にマウスを乗せて、右に出る「+」を押し、一覧から「Part」を押します。Stageの中にPartが入ります。
エクスプローラにできた「Part」を選んでF2キーを押し、名前を「ColorPart」に変えます。板の大きさと位置は、この練習では決めなくてかまいません。
ColorPartを選んだまま、3D画面上部メニューの「ホーム」タブにある「色」ボタン(「素材」ボタンの右)のすぐ右にある小さな矢印を押して色の一覧を開き、濃い青の「Really blue(真っ青)」を選びます。そのあと「色」ボタンのアイコン本体を押すと、板が青くなります。
最後に、エクスプローラの「ServerScriptService」にマウスを乗せて「+」を押し、一覧から「Script」を押します。できた「Script」を選んでF2キーを押し、名前を「ColorCheck」に変えます。Stageの中のColorPart(画像の1)と、ServerScriptServiceの中のColorCheck(画像の2)が、次の画像のように並べば準備は完了です。

エクスプローラのColorCheckをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。
print("A: 処理を開始", script:GetFullName())
local part = workspace.ColorPart
print("B: 対象を取得できた")
part.Color = Color3.fromRGB(255, 0, 0)
print("C: 変更の処理を通過した")

コードの「print(プリント)」は、出力に文字を出す命令です。「A」「B」「C」の目印を処理の前後に入れておくと、どの目印まで出たかで、どこで止まったかが分かります。
3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。出力に次のように出ます(赤い枠)。

| 出力 | 分かること |
|---|---|
| A: 処理を開始 ServerScriptService.ColorCheck | スクリプトは動き始めている |
| ColorPart is not a valid member of Workspace "Workspace" | 「Workspaceのすぐ下にColorPartがない」というエラー |
| ColorCheck:2 | ColorCheckの2行目で止まった |
| Bが出ていない | 2行目より先には進んでいない |
エクスプローラで見ると、ColorPartはWorkspaceのすぐ下ではなく、「Stage」フォルダーの中にあります(赤い枠)。名前は合っていても、場所が違うのが原因です。

3. 直して、A・B・Cが全部出るか確かめる
Shift + F5キーでテストを停止します。画面左上の赤い四角の「停止」(赤い枠)を押しても止まります。

3D画面の上の「ColorCheck」のタブを押し、中身を全部消して、2行目を「workspace.Stage.ColorPart」に直した次のコードを貼り付けます。
print("A: 処理を開始", script:GetFullName())
local part = workspace.Stage.ColorPart
print("B: 対象を取得できた")
part.Color = Color3.fromRGB(255, 0, 0)
print("C: 変更の処理を通過した")

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。A・B・Cの3つが出て、板が赤くなります(赤い枠)。

| どこまで出たか | 次に調べるところ |
|---|---|
| Aも出ない | スクリプトが動いていない(下の手順4・5・6) |
| Aだけ出る | AとBの間(部品を探す行) |
| AとBが出る | BとCの間(色を変える行) |
| 全部出るのに見た目が変わらない | 別の部品を変えていないか、ほかのスクリプトが元に戻していないか |
この記事の練習では、このあとの手順4〜6でもColorCheckのA・B・Cを使うのでprintは残したまま進めます。自分のスクリプトでは、調べ終わったら目印のprintは消しておきます。たくさん残っていると、大事なメッセージが探しにくくなります。
4. LocalScriptの置き場所を確かめる
何も出ないときは、スクリプトの置き場所を疑ってください。特に、遊ぶ人の画面で動く「LocalScript」は、置ける場所が決まっていて、それ以外に置いても動きません。
試しに、同じLocalScriptを、エクスプローラの「ReplicatedStorage」と「StarterPlayerScripts」の2か所に置いて比べます。
Shift + F5キーでテストを停止します。エクスプローラの「ReplicatedStorage」にマウスを乗せて「+」を押し、一覧の上の検索欄に「LocalScript」と入れて「LocalScript」を押します。
できた「LocalScript」を選んでF2キーを押し、名前を「HelloLocal」に変えます。HelloLocalをダブルクリックして開き、中身を全部消して、次の1行を貼り付けます。出力に、そのスクリプトがどこで動いたかを出す1行です。
print("LocalScriptが動きました", script:GetFullName())
次に、StarterPlayerScriptsにも入れます。StarterPlayerScriptsは、エクスプローラの「StarterPlayer」の中にあります。「StarterPlayer」の左の三角を押して開きます。
エクスプローラの「StarterPlayerScripts」にマウスを乗せて「+」を押し、一覧の上の検索欄に「LocalScript」と入れて「LocalScript」を押します。
StarterPlayerScriptsの中にできた「LocalScript」を選んでF2キーを押し、名前を「HelloLocal」に変えます。
StarterPlayerScriptsの中のHelloLocalをダブルクリックして開き、中身を全部消して、次の1行を貼り付けます。ReplicatedStorageに入れたものと同じ1行です。
print("LocalScriptが動きました", script:GetFullName())
2か所に「HelloLocal」が入れば準備は完了です。

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。LocalScriptの行は1行だけ出ます(赤い枠)。上の3行は、手順3のColorCheckが出したものです。行の中の「PlayerScripts」は、StarterPlayerScriptsに置いた方が動いたという意味です。ReplicatedStorageに置いた方は動いていません。

| スクリプトの種類 | 動く主な置き場所 |
|---|---|
| Script(RunContextが最初の「Legacy」のまま) | ServerScriptService、Workspaceの中(Workspaceの部品の中でも動くが、Robloxの公式の説明ではおすすめしていない) |
| LocalScript | StarterPlayerScripts、StarterCharacterScripts、StarterGui、StarterPackの中 |
| ModuleScript | 置いただけでは動かない。ほかのスクリプトから呼んで使う |
RunContextは、スクリプトをサーバーとプレイヤーの画面のどちらで動かすかを決めるプロパティです。「+」で入れたScriptは、最初は「Legacy」になっています。この記事のColorCheckも「Legacy」のまま変えずに動かしています。
5. 「テスト」と「実行」を間違えていないか
Studioの窓の左上で、青い再生ボタンの左にある「テスト」の右の「∨」を押すと、テストのやり方を選べます。「実行」(赤い枠)が選ばれていると、アバターを出さずにゲームを動かします。違いを確かめるために、Shift + F5キーでテストを停止してから、「∨」を押して「実行」を選びます。

「テスト」の文字が「実行」に変わったら、その右の青い三角のボタンを押して動かします。実行では、アバターが出てこず、遊ぶ人の画面で動くLocalScriptも動きません。下の画像では、サーバーで動くColorCheckのA・B・Cは出ていますが、HelloLocalの行は出ていません。プレイヤーが触れたときの仕掛けや、画面のボタンを試すときは、必ず「テスト」を選びます。

確かめたら、Shift + F5キーで停止します(画面左上の赤い四角の「停止」を押しても止まります)。そのあと「実行」の右の「∨」を押し、一覧から「テスト」を選んで元に戻します。戻さないと、このあとのテストでもアバターが出ず、LocalScriptも動きません。
6. スクリプトが無効になっていないか
スクリプトには、動かすかどうかを決める「Enabled」というプロパティがあります。エクスプローラの「ColorCheck」を選んだ状態で、プロパティの検索欄に「Enabled」と入力します。最初はチェックが入っています。試しに、このチェックを押して外します。チェックが外れていると(赤い枠)、そのスクリプトは動きません。

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。無効になったスクリプトは、タブの名前の前に「[Disabled]」と付きます。そのスクリプトのメッセージは出力に出ません。下の画像では、出力に出ているのはHelloLocalの1行だけで、ColorCheckのA・B・Cは出ず、板も青いままです。AIに頼んだり、ツールボックスのモデルを入れたりしたあとに、知らないうちに無効になっていることもあります。

確かめたら、Shift + F5キーでテストを停止します。エクスプローラの「ColorCheck」を選んだまま、プロパティの「Enabled」のチェックを押して、もう一度チェックを入れて戻します。
AIに相談するときの伝え方
ここまで確かめた内容をまとめて伝えると、AIも原因を見つけやすくなります。
Roblox Studioのスクリプトが思ったとおりに動きません。直し方を教えてください。
・期待した動き:(例)テストを始めると板が赤くなる
・実際の動き:(例)板が青いまま
・スクリプトの種類と置き場所:(例)ServerScriptServiceの中のScript、RunContextは最初のLegacyのまま
・どこまでprintが出たか:(例)Aだけ出た
・出力のメッセージ:(赤い文字をそのまま貼る)
・コード全文:(ここに貼る)
まず確かめることを1つ教えてから、直したコードを示してください。
よくある質問
自分の画面では動くのに、ほかの人には見えないのはなぜ?
LocalScriptで部品を変えると、その変化は自分の画面にしか出ません。全員に見せたい変化は、サーバーで動くScriptで行います。2人で確かめる方法はオビーの作り方の手順8で紹介しています。
テストを止めたら、直したはずのところが元に戻った
テスト中にエクスプローラやプロパティを変えても、止めると元に戻る仕組みです。直すときは、必ずテストを止めてから変えます。
次は、足場を渡ってゴールを目指すオビーを作ります。次のステップ(入門 7/24)
次に知りたいことを選ぶ
- 次のステップ:足場を渡ってゴールを目指すオビーを作ります → ロブロックス(Roblox)でオビーを作る方法
- 最初のゲームを作ってみたい → ロブロックス(Roblox)でオビーを作る方法
- スクリプトの基本を知りたい → ロブロックス(Roblox)スクリプトの作り方
- Studioの操作で困っている → Robloxで困ったとき