循環和陣列

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

陣列 可以與循環結合,例如 , 重複每個索引值的相同代碼。 例如,將每個玩家在陣列中傳送到新位置或使用陣列來抓觸發。

要探索透過陣列連接到的循環,請創建一個消失的橋樑路徑,其中零件被放置在陣列中,然後再被消失一個一個。

在陣列中循環

對於項目,尋找或創建三個零件來使其消失。零件必須都錨定。

  1. 建立三個零件。 命名零件按照它們應該消失的順序, Part1、Part2、Part3。

  2. 在 ServerScriptService 中,插入新指令碼並創建一個陣列來儲存零件。


    local pathArray = {
    }
  3. 在每行中,單條輸入零件的名稱,以便它們在不同的順序會消失。使用新行為每個值輸入更容易已讀。


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

使用陣列與 Loop 的 for

使用 for 循環去通過阵列並控制零件在索引零陣列內的速度。

  1. 要控制零件在秒鐘內消失的頻率,請創建名為 VANISH_RATE 的變數。為了測試,最好將其保持在小數字。


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 使用以追蹤中項目建立 for 循環: 開始: partIndex = 1 , 數據陣列中的第一個值的索引。 結束: 1> #路徑陣1> , 數據陣列的大小。


    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 並將 1> Transparency1> 設為 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)

編寫第二個循環

現在,零件將永久消失。要重新創建零件,請建立一個二次循環,每個零件都會立即變為可走行。

  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. 在你自己的代碼上 ,試著在路徑上再次使用路徑可碰撞屬性和透明度變更為 true 來使路徑可用。完成後,請檢查您的工作是否與以下代碼一致。


    -- 重設路徑,讓所有零件再走得走路
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. 測試項目來確認一旦所有零件消失,它們會重新回返回。

使用 While 循環重複

零件會消失,然後重新出現,但只會出現一次。要讓代碼一直重複,請將所有代碼放在一個 while 陣列中。

  1. 在指令碼的底部,建立新的 while 做循環。然後, 移動 both 為循環到 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. 在工作區中,創建名為 PartsFolder 的資料夾。添加你喜歡的零件。

  2. 在 ServerScriptService 中,創建新指令碼並參照目錄。

  3. 使用 GetChildren() 自動取得所有對象的樣式清單。


    local partsFolder = workspace.PartsFolder
    -- 取得 PartsFolder 中的零件清單
    local partsArray = partsFolder:GetChildren()
  4. 使用 in ipairs(ArrayToUse) 與 for 循環通過零件據量樹和添加粒子。

    已完成的指令碼

    -- 取得 PartsFolder 中的零件清單
    local partsArray = partsFolder:GetChildren()
    -- 在陣列中增加粒子到每個部分
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

測試並觀看每個文件夾中的粒子漂浮。

摘要

可以將陣列結合在一起以快速處理任何數量的值。如果您想要對幾個零件和以什麼順序進行準確控制,則必須使用陣列。陣列必須由特定值硬化。

要在許多零件中工作時不需要順序,GetChildren() 可以創建一個子對物件的列表。使用 ipairs() ,列表可以快速地迭代過無需知道子對陣列的大小。