循環和陣列

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

陣列 可以與循環結合,例如 whilefor ,重複每個索引值的相同代碼。例如,將每個玩家在一個陣列中傳送到新的地方或使一個部分陣列發生火觸發。

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

在一個陣列中循環

對於項目,尋找或創建一組三個部分以消失。所有部分必須被錨定。

  1. 創建三個零件。按照零件應該消失的順序命名零件,第1部分、第2部分、第3部分。

  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) ,

編寫第二個循環

目前,零件會永遠消失。要讓它們重新出現,創建一個第二個循環,將通過每個部分並立即使每個部分都能行走。

  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 屬性變為真實並將透明變為 0,使路徑再次可用。完成後,請檢查您的工作與以下代碼的差異。


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

使用 while 循環重複

零件會消失和重新出現,但只能一次。要使代碼持續重複,請將所有代碼納入 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" 代表"索引"。ipairs() 可以用來快速重複在許多對象上的操作,例如滿是零件的文件夾。

這將通過快速將粒子添加到整個文件夾的零件來展示。

  1. 在工作區中,創建名為零件文件夾的文件夾。添加你想要的零件數量。

  2. 在 ServerScriptService 中,創建新的腳本並參考文件夾。

  3. 使用 GetChildren() 自動獲得文件夾中所有對象的列表。


    local partsFolder = workspace.PartsFolder
    -- 取得列出零件在零件文件夾中的一個數組
    local partsArray = partsFolder:GetChildren()
  4. 使用 in ipairs(ArrayToUse) 與 for 循環去通過 partsArray 並添加粒子。

    已完成的腳指令碼

    -- 取得列出零件在零件文件夾中的一個數組
    local partsArray = partsFolder:GetChildren()
    -- 為陣列中的每個部分添加粒子
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

進行遊戲測試並觀察粒子從文件夾中的每一部分漂浮起來。

總結

循環可以與陣列結合以快速處理任何數量的值。如果您想對幾個零件發生的事情和順序進行準確控制,必須使用特定值硬碼一個陣列。

若要與許多部分工作,其中訂單無關,GetChildren() 可以創建一個對物件的子集的數組。使用 ipairs() , 列表可以快速迭代而不需要知道陣列的大小。