ループと配列

*このコンテンツは、ベータ版の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. フォロー中のコードを使用してループを作成します: 開始: partIndex = 1 、アレイの最初の値のインデックス。 終了: 1> #pathArray1> 、そのアレイのサイズ。


    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 プロパティを偽に設定し、2>Transparency2> を 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番目のループをコード

現在、パーツは永遠に消えます。再度パーツを作成するには、パーツがそれぞれ通過するインスタントなリーチを作成し、パーツを即座に歩行可能にするループを作成します。

  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 プロパティを変更してループをコード化してください。完了したら、コードをチェックしてコードの下のコードと比較してください。


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

While ループで重複

パーツは消えてから再出現しますが、1回だけです。コードを繰り返しているように見せるには、コードをすべてまたコードの中にネストします。

  1. スクリプトの底部で、新しい while true do loop を作成します。その後、 両方を ループに移動します。


    while true do
    -- 配列からパーツを消す
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- パスを再び表示する前に 1 秒待ってください
    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
-- パスを再び表示する前に 1 秒待ってください
task.wait(1.0)
-- すべてのパーツを再び歩行可能にすることでパスをリセット
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

配列と IP 配列 (ipairs()}

ipairs() は、 配列 で使用されます。ipairs() の「i」は、「インデックス」を意味します。ipairs() は、パーツでいっぱいのフォルダなど、多くのオブジェクトのオペレーションを迅速に繰り返すために使用されます。

これは、パーティクルをフォルダ全体に素早く追加することで示されます。

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

  2. In 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() を使用して、オーダーの大きさを知らずにリストを迅速にイテレートできます。