「出力にオレンジ色の文字で『Infinite yield possible』と出た」「AIが書いたコードが途中で止まってしまう」
ロブロックス(Roblox)スタジオで出る「Infinite yield possible」の直し方を、実際の画像付きで誰でも簡単に分かるように解説します。この記事では、わざと警告を出す練習をして、警告の中から「何を」「どこで」待っているかを読み取り、名前と場所を合わせて直すところまで進めます。
入門ステップ16/24 前の記事:ロブロックス(Roblox)でコイン集めゲームを作る方法 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、練習用の新しい作品。パーツやスクリプトの入れ方はオビーの作り方で画像付きで解説しています。

「Infinite yield possible」は何を知らせている?
スクリプトの「WaitForChild(ウェイトフォーチャイルド)」は、「この名前の部品が来るまで待つ」という命令です。待っている部品が5秒たっても見つからないと、出力に「Infinite yield possible(ずっと待ち続けるかもしれません)」と出ます。
この警告はエラーで止まったのとは違い、見つかるまで待ち続けているので、その先の行が動かない状態です。原因の多くは、次の3つのどれかです。
| 原因 | 例 |
|---|---|
| 名前が違う | 部品は「GuideTargetPart」なのに、コードは「GuideTarget」を待っている |
| 場所が違う | 部品がフォルダーの中にあるのに、Workspaceのすぐ下を探している |
| まだ作られていない | ゲームが始まってから作る部品を、作る前に待っている |
1. 練習用の部品とスクリプトを用意する
新しいBaseplateを開き、エクスプローラの「Workspace」にマウスを乗せて「+」を押します。一覧の上の検索欄に「Part」と入れ、一覧の「Part」を押します。画像の赤い枠が「次に押す場所」で、画像を押すと大きく表示できます。ボタンの名前や置き場所は、Roblox側の更新で変わることがあります。

エクスプローラにできた「Part」を選んだ状態でF2キーを押し、「GuideTargetPart」と入力してEnterキーを押します。
GuideTargetPartを選んだまま、3D画面上部メニューのホームタブにある「固定」(画像の1、「エクスプローラ」ボタンのすぐ左)を押します。エクスプローラのWorkspaceのすぐ下に「GuideTargetPart」(画像の2)があれば、準備は完了です。

次に、エクスプローラの「ServerScriptService」にマウスを乗せて「+」を押します。

一覧の上の検索欄に「Script」と入れ、一覧の「Script」を押します。

エクスプローラにできた「Script」を選んだ状態でF2キーを押し、「GuideLookup」と入力してEnterキーを押します。
GuideLookupを選んだまま、プロパティの検索欄に「RunContext」と入力し、「▼動作」の欄にあるRunContextの一覧から「Server」を選びます。RunContextは、スクリプトをサーバーとプレイヤーのどちらで動かすかを決める設定です。

2. わざと違う名前を待って、警告を出す
GuideLookupのタブが開いていなければ、エクスプローラの「GuideLookup」をダブルクリックして開きます。GuideLookupの画面で、中身を全部消して、次の2行を貼り付けます。実際の部品は「GuideTargetPart」ですが、コードは「GuideTarget」を待つようにわざとずらしています。
local target = workspace:WaitForChild("GuideTarget")
print("見つかりました", target.Name)

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

テストを始めて5秒ほど待つと、出力に、次の画像のようなオレンジ色の文字が出ます(赤い枠)。

3. 警告の3か所を読む
出力には4行が出ます。1行目がオレンジ色の警告で、その下の「Stack Begin」と「Stack End」は、警告がどこで起きたかの説明の始まりと終わりの目印です。読むのは、次の3か所です。
| 警告の部分 | 読み取れること |
|---|---|
| 1行目の Workspace:WaitForChild("GuideTarget") | Workspaceのすぐ下で、「GuideTarget」という名前を待っている |
| 3行目の Script 'ServerScriptService.GuideLookup' | 待っているのは、ServerScriptServiceの「GuideLookup」というスクリプト |
| 同じ3行目の最後の Line 1 | そのスクリプトの1行目 |
次に、エクスプローラでWorkspaceのすぐ下を見ます。あるのは「GuideTargetPart」で、「GuideTarget」はありません。名前が違うことが分かりました。
4. 名前を合わせて直す
Shift + F5キーでテストを停止します。3D画面の上の「GuideLookup」のタブを押し、中身を全部消して、「GuideTarget」を「GuideTargetPart」に直した次のコードを貼り付けます。今回は、実際の部品の名前にコードを合わせます。
local target = workspace:WaitForChild("GuideTargetPart")
print("見つかりました", target.Name)

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。警告は出ずに「見つかりました GuideTargetPart」と出ます。2行目まで進めたという合図です。

5. 名前が同じでも警告が出るとき(フォルダーの中にある)
名前が合っていても、部品がフォルダーの中に入っていると、Workspaceのすぐ下では見つかりません。試しに、部品をフォルダーの中に入れてみます。
Shift + F5キーでテストを停止します。エクスプローラの「Workspace」にマウスを乗せて「+」を押し、検索欄に「Folder」と入れて「Folder」(赤い枠)を押します。

できたフォルダーをエクスプローラで選んでF2キーを押し、名前を「GuideObjects」に変えます(赤い枠)。

エクスプローラの「GuideTargetPart」(画像の1)をマウスでつかみ、「GuideObjects」(画像の2)の上まで動かして離します。

次の画像のように、GuideObjectsの中にGuideTargetPartが入れば準備は完了です。

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。5秒ほど待つと、今度は「GuideTargetPart」を待つ警告が出ます。

フォルダーの中を探すときは、先にフォルダーを見つけてから、その中で部品を待つのがコツです。次のコードは、どちらかが5秒たっても見つからなければ、何が見つからないかを出力に出して止まります。
Shift + F5キーでテストを停止します。3D画面の上の「GuideLookup」のタブを押し、中身を全部消して、次のコードを貼り付けます。
local folder = workspace:WaitForChild("GuideObjects", 5)
if not folder then
warn("GuideObjectsが見つかりません。名前と配置を確認してください。")
return
end
local target = folder:WaitForChild("GuideTargetPart", 5)
if not target then
warn("GuideTargetPartが見つかりません。フォルダー内を確認してください。")
return
end
print("見つかりました", target.Name)

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。「見つかりました GuideTargetPart」と出ます。

「WaitForChild("GuideObjects", 5)」の「5」は、待つのを5秒であきらめるという意味です。あきらめたときは「nil(何もない)」が返るので、その場合の動きを「if not folder then」で決めています。コードの3行目の warn は、出力にオレンジ色の文字で知らせる命令です。4行目の return は、スクリプトをそこで終わらせる命令です。
待ち時間を付ければ直る?
待ち時間を付けると警告は出なくなりますが、名前や場所が違うままなら、部品は見つからないままです。警告を消すことと、ゲームが正しく動くことは別だと考えてください。まず名前と場所を合わせ、待ち時間は「見つからなかったときにどうするか」を決めるために使います。
AIに相談するときの伝え方
AIにコードを直してもらうときは、警告の全文と、エクスプローラでの実際の場所を一緒に伝えると、1回で正しい答えが返ってきやすくなります。
Roblox Studioで「Infinite yield possible」の警告が出ます。警告を消すだけでなく、部品を正しく見つけたいです。
・警告の全文:(出力の「Infinite yield possible」から「Stack End」までの行をそのまま貼る)
・待っている部品の、エクスプローラでの実際の場所と名前:(例)Workspace > GuideObjects > GuideTargetPart
・スクリプトの種類と場所:(例)ServerScriptServiceの中のScript
・コード全文:(ここに貼る)
名前・場所・作られる時期のどれが原因かを確かめる順番と、直したコードを教えてください。
よくある質問
LocalScriptで出たときも同じ直し方?
基本は同じです。ただ、Robloxの公式の説明によると、遊ぶ人の画面で動くLocalScriptでは、部品がサーバーから届く時間や順番が決まっていません。また、StreamingEnabledがオンの作品では、アバターから遠くの部品がまだ届いていないこともあります。名前と場所が合っているのに出るときは、スクリプトが動かないときの確認手順も確かめてください。
大文字と小文字は区別される?
区別されます。「guidetargetpart」と「GuideTargetPart」は別の名前として扱われます。エクスプローラの名前を、そのままコピーして使うのが確実です。
次は、看板や頭の上に文字を出します。次のステップ(入門 17/24)
次に知りたいことを選ぶ
- 次のステップ:看板や頭の上に文字を出します → ロブロックス(Roblox)スタジオの文字の入れ方
- ほかの理由でスクリプトが動かない → ロブロックス(Roblox)でスクリプトが動かないときの確認手順
- スクリプトの基本を知りたい → ロブロックス(Roblox)スクリプトの作り方
- Studioの操作で困っている → Robloxで困ったとき