ループと配列

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

配列 は、 whilefor などのループと組み合わせることで、インデックスされた値ごとに同じコードを繰り返すことができます。たとえば、配列内の各プレイヤーを新しい場所にテレポートするか、パーツの配列が炎上するようにします。

アレイをループして探索するには、パーツがアレイに配置されてから一つずつ消えるブリッジパスを作成し、消えるようにします。

アレイをループする

プロジェクトのために、消えるための 3 部分のセットを見つけたり作成したりします。部品はすべてアンカーされている必要があります。

  1. 3つのパーツを作成し、消えるべき順序でパーツの名前を付け、Part1、Part2、Part3。

  2. ServerScriptService では、新しいスクリプトを挿入し、パーツを保存する配列を作成します。


    local pathArray = {
    }
  3. それぞれの行に、消えるべき順序でパーツの名前を入力します。新しい行を使用すると、既読みやすくなります。


    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番目のループを作成し、それぞれの部品をすぐに歩行可能にします。

  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 に変更し、透明度を 0 に変更して、再びパスを使用できるループをコード化してみてください。終了したら、以下のコードと比較して作業をチェックします。


    -- すべてのパーツを再び歩けるようにして、パスをリセットする
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. すべてのパーツが消えた後、再戻る戻ってくることを確認するためにプロジェクトをテストします。

while ループで繰り返す

パーツは消えて再出現しますが、1回だけです。コードを繰り返し続けるように、すべてのコードを while ループ内にネストします。

  1. スクリプトの最下部で、新しい while ループを作成します。次に、 ループ両方を 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" は "index" を意味します。ipairs() を使用すると、パーツがいっぱいのフォルダのように、複数のオブジェクトに対して操作を迅速に繰り返すことができます。

これは、パーツの全フォルダに粒子を迅速に追加することで示されます。

  1. ワークスペースで、パーツフォルダという名前のフォルダを作成します。好きなだけ多くのパーツを追加します。

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

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


    local partsFolder = workspace.PartsFolder
    -- パーツフォルダにあるパーツのリストを取得する阵列を取得する
    local partsArray = partsFolder:GetChildren()
  4. for ループを使用して in ipairs(ArrayToUse) パーツアレイを通り抜けてパーティクルを追加する。

    完了したスクリプト

    -- パーツフォルダにあるパーツのリストを取得する阵列を取得する
    local partsArray = partsFolder:GetChildren()
    -- 配列のすべてのパーツにパーティクルを追加する
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

プレイテストして、フォルダ内の各パーツから浮かんでくる粒子を見る

概要

ループは、アレイと組み合わせて、任意の数の値をすばやく処理できます。いくつかのパーツに何が起こり、どの順序で起こるかを正確に制御したい場合は、特定の値でハードコードされた配列が必要です。

順序が重要でない多くのパーツで作業するには、GetChildren() はオブジェクトの子供の配列を作成できます。ipairs() を使用すると、列は配列のサイズを知らずに迅速に反復できます。