ループと配列

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

配列は、whileforなどのループと組み合わせて、各インデックス付きの値に対して同じコードを繰り返すことができます。たとえば、配列内の各プレイヤーを新しい場所にテレポートさせたり、部品の配列を燃やしたりすることができます。

配列をループする方法を探るために、部品が配列に配置され、一つずつ消えていく消える橋の道を作成します。

配列をループする

プロジェクトのために、消えるための3つの部品のセットを見つけるか作成します。部品はすべて固定されていなければなりません。

  1. 3つの部品を作成します。消える順序で部品に名前を付けます:Part1、Part2、Part3。

  2. ServerScriptServiceに新しいスクリプトを挿入し、部品を格納するための配列を作成します。


    local pathArray = {
    }
  3. 各部品の名前を消える順序で1行ずつ入力します。各値のために新しい行を使用すると、読みやすくなります。


    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3,
    }

配列でforループを使用する

forループを使用して、配列を走査し、部品が配列内でインデックスされている順序で、どれくらいの速さで消えるかを制御します。

  1. 部品が消える頻度を制御するために、VANISH_RATEという名前の変数を作成します。テストのためには、小さな数値に保つのが最適です。


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 次の内容でforループを作成します:開始: partIndex = 1、配列の最初の値のインデックス。 終了: #pathArray、その配列のサイズ。


    for partIndex = 1, #pathArray do
    end
  3. 部品が消える前に遅延があるように、ループ内にtask.wait()を追加し、VANISH_RATEを使用します。


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. 部品を消すために、whichPartという名前の新しい変数を作成し、それをpartsArray[partIndex]に設定します。次に、その部品を消すために、CanCollideプロパティをfalseに設定し、Transparencyを1に設定します。


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. 時間の経過とともに道の部分が消えることを確認します。

トラブルシューティングのヒント

橋が消えない場合、以下の可能性のある問題を確認してください:

問題: 部品が速すぎて消えたり、最初からすべて消えている。

  • あなたのキャラクターがエクスペリエンスに読み込まれる速さによっては、最初の部品がすでに見えなくなっている可能性があります。これに対処するために、スクリプトの先頭にtask.wait(2)のような小さな待機を追加してください。

2つ目のループをコーディング

今のところ、部品は永遠に消えます。彼らを再び現れるようにするために、各部品をすぐに歩行可能にする2つ目のforループを作成します。

  1. 最初のループの後に、短い遅延を作成するためにtask.wait()を追加します。


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. **自分で、**各部品のCanCollideプロパティをtrueに変更し、Transparencyを0にすることで、道を再び使えるようにする2つ目のforループをコーディングしてみてください。完了したら、下記のコードと照らし合わせて自分の作業をチェックしてください。


    -- 構造をリセットしてすべての部品を再び歩行可能にする
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. プロジェクトをテストして、すべての部品が消えたら再び現れることを確認します。

whileループで繰り返す

部品は消えたり再現したりしますが、1回限りです。コードが繰り返し動作するように、すべてのコードをwhileループにネストします。

  1. スクリプトの一番下にwhile true doループを作成します。次に、両方のforループをwhileループに移動します。


    while true do
    -- 配列から順番に部品を消します
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- 道を再び現す前に待機します
    task.wait(1)
    -- 構造をリセットしてすべての部品を再び歩行可能にする
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. すべての部品が消えたら、再現することを確認します。

プロジェクトの完成版をダウンロードできます。

完成したスクリプト

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- 配列から部品を順番に消します
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- 道を再び現す前に待機します
task.wait(1.0)
-- 構造をリセットしてすべての部品を再び歩行可能にする
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

配列とipairs()

ipairs()配列と共に使用されます。ipairs()の「i」は「インデックス」を意味します。ipairs()は、多くのオブジェクトに対して迅速に操作を繰り返すために使用できます。たとえば、部品のフォルダの全体に与える場合などです。

これは、部品のフォルダ全体にパーティクルを迅速に追加することで示されます。

  1. WorkspaceにPartsFolderという名前のフォルダを作成します。好きなだけ部品を追加します。

  2. ServerScriptServiceで新しいスクリプトを作成し、フォルダを参照します。

  3. GetChildren()を使用して、フォルダ内のすべてのオブジェクトを自動的にリストする配列を取得します。


    local partsFolder = workspace.PartsFolder
    -- PartsFolder内の部品の配列を取得します
    local partsArray = partsFolder:GetChildren()
  4. forループ内でin ipairs(ArrayToUse)を使用してpartsArrayを走査し、パーティクルを追加します。

    完成したスクリプト

    -- PartsFolder内の部品の配列を取得します
    local partsArray = partsFolder:GetChildren()
    -- 配列内のすべての部品にパーティクルを追加します
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

プレイテストして、フォルダ内の各部品からパーティクルが浮かび上がるのを見てください。

概要

ループは、配列と組み合わせて任意の数の値を迅速に操作することができます。いくつかの部品に対して正確な制御を行いたい場合、特定の値で配列をハードコードする必要があります。

順序が問題とならない多くの部品を操作する場合は、GetChildren()がオブジェクトの子の配列を作成できます。ipairs()を使用することで、配列のサイズを知らなくても、リストを迅速に反復することができます。

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。