WaitForChildとFindFirstChild:まだないものを待つ・探す
初級スクリプト更新日:2026年11月13日Luauの型チェック済み
ひとことで言うと
WaitForChildは、指定した名前の子が現れるまで待ってから返します。FindFirstChildは、今あるかどうかを探して、なければnilを返します。LocalScriptでは、まだ読み込まれていないものがあるので、WaitForChildを使うのが基本です。
2つの違い
| メソッド | なかったとき | 主な使いどころ |
|---|---|---|
| WaitForChild | 現れるまで待つ | LocalScriptで、キャラクターや共有の部品を使うとき |
| FindFirstChild | すぐnilを返す | あるかないかで処理を分けたいとき |
例:自分のキャラクターの体力を表示する
(LocalScript/置く場所:StarterPlayerScripts)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid") :: Humanoid
print(player.Name .. " の体力:" .. humanoid.Health)
player.Character は、まだキャラクターが出現していないとnilです。「player.Character or player.CharacterAdded:Wait()」と書くと、出現するまで待ってから使えます。
Infinite yield possible と表示されたら
WaitForChildで待っている名前の子が、いつまでも現れないときに出る警告です。名前の打ち間違い(大文字・小文字も区別されます)や、置き場所の間違いがないかを確かめましょう。くわしくはつまずき集で解説しています。