循環與陣列

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

陣列可以與循環結合使用,例如 whilefor,以對每個索引值重複相同的代碼。例如,將陣列中的每個玩家傳送到新地點或使一組零件著火。

要探索遍歷陣列,創建一條消失的橋樑路徑,將零件放入陣列中,然後一個接一個地使其消失。

遍歷陣列

對於這個項目,找到或創建一組三個零件使其消失。這些零件必須全部固定。

  1. 創建三個零件。按照它們應該消失的順序命名零件,分別為 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 的新變量,並將其設置為 pathArray[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)

編寫第二個循環

現在,零件會永遠消失。為了讓它們重新出現,創建第二個 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. 自行嘗試編寫第二個 for 循環,使路徑再次可用,通過將每個零件的 CanCollide 屬性設置為 true,Transparency 設置為 0。完成後,將你的工作與以下代碼進行對比。

    -- 通過使所有零件再次可行走來重置路徑
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. 測試項目以確認所有零件消失後會重新出現。

使用 while 循環重複

零件消失並重新出現,但僅一次。為了讓代碼不斷重複,將所有代碼嵌套在 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 是我們在美國及其他國家地區的部分註冊與未註冊商標。