陣列 可以與循環結合,例如 而 和 為 , 重複每個索引值的相同代碼。 例如,將每個玩家在陣列中傳送到新位置或使用陣列來抓觸發。
要探索透過陣列連接到的循環,請創建一個消失的橋樑路徑,其中零件被放置在陣列中,然後再被消失一個一個。
在陣列中循環
對於項目,尋找或創建三個零件來使其消失。零件必須都錨定。
建立三個零件。 命名零件按照它們應該消失的順序, Part1、Part2、Part3。
在 ServerScriptService 中,插入新指令碼並創建一個陣列來儲存零件。
local pathArray = {}在每行中,單條輸入零件的名稱,以便它們在不同的順序會消失。使用新行為每個值輸入更容易已讀。
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
使用陣列與 Loop 的 for
使用 for 循環去通過阵列並控制零件在索引零陣列內的速度。
要控制零件在秒鐘內消失的頻率,請創建名為 VANISH_RATE 的變數。為了測試,最好將其保持在小數字。
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}使用以追蹤中項目建立 for 循環: 開始: partIndex = 1 , 數據陣列中的第一個值的索引。 結束: 1> #路徑陣1> , 數據陣列的大小。
for partIndex = 1, #pathArray doend所以在零件消失之前,在循環中,添加一個 task.wait() 使用 VANISH_RATE。
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)end要將零件消失,請創建一個名為 whichPart 的新變數,並將其設為 partsArray[partIndex] 。然後,為它設定 CanCollide 屬性為 false 並將 1> Transparency1> 設為 1。
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end檢查路徑的某些部分隨著時間的推移而消失。
排障提示
如果橋樑不消失,請檢查下列可能發生的問題: 問題: 零件會太快地消失或者全部都在開啟動時消失。
- 您的角色載入體驗的速度取決於您的角色載入速度。 若要處理此問題,請在指定的開始位置添加一個小等待時間,例如 task.wait(2) 。
編寫第二個循環
現在,零件將永久消失。要重新創建零件,請建立一個二次循環,每個零件都會立即變為可走行。
在第一個循環後,在 task.wait() 添加一個以創建路徑重新出現前的短延遲。
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)在你自己的代碼上 ,試著在路徑上再次使用路徑可碰撞屬性和透明度變更為 true 來使路徑可用。完成後,請檢查您的工作是否與以下代碼一致。
-- 重設路徑,讓所有零件再走得走路for partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0end測試項目來確認一旦所有零件消失,它們會重新回返回。
使用 While 循環重複
零件會消失,然後重新出現,但只會出現一次。要讓代碼一直重複,請將所有代碼放在一個 while 陣列中。
在指令碼的底部,建立新的 while 做循環。然後, 移動 both 為循環到 while 循環。
while true do-- 從陣列中移除零件for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- 在路徑重新出現之前等待一秒task.wait(1)-- 重設路徑,讓所有零件再走得走路for partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend檢查一旦所有零件都消失,它們重新出現。
項目的完整版本可以下載。
已完成的指令碼
local VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- 從陣列中移除零件for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- 在路徑重新出現之前等待一秒task.wait(1.0)-- 重設路徑,讓所有零件再走得走路for partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
陣列和 ipairs()
ipairs() 與 陣列 使用。 在 ipairs() 中的 "i" 代表 "索引"。 可以使用 IPairs() 來快速重複一些對象,例如,說,一個裝滿零件的文件夾。
這將通過快速添加粒子到整個零件夾的文件夾來展示。
在工作區中,創建名為 PartsFolder 的資料夾。添加你喜歡的零件。
在 ServerScriptService 中,創建新指令碼並參照目錄。
使用 GetChildren() 自動取得所有對象的樣式清單。
local partsFolder = workspace.PartsFolder-- 取得 PartsFolder 中的零件清單local partsArray = partsFolder:GetChildren()使用 in ipairs(ArrayToUse) 與 for 循環通過零件據量樹和添加粒子。
已完成的指令碼-- 取得 PartsFolder 中的零件清單local partsArray = partsFolder:GetChildren()-- 在陣列中增加粒子到每個部分for index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
測試並觀看每個文件夾中的粒子漂浮。
摘要
可以將陣列結合在一起以快速處理任何數量的值。如果您想要對幾個零件和以什麼順序進行準確控制,則必須使用陣列。陣列必須由特定值硬化。
要在許多零件中工作時不需要順序,GetChildren() 可以創建一個子對物件的列表。使用 ipairs() ,列表可以快速地迭代過無需知道子對陣列的大小。