阵列 可以与循环结合,例如 while 和 for ,重复每个索引值的相同代码。例如,将每个玩家在阵列中传送到新的地方或使一个部分阵列发生火触发。
要探索通过阵列循环,创建一个消失的桥路径,其中零件被放置到阵列中,然后逐个消失。
循环通过一个阵数组
对于项目,找到或创建一个由三个部分组成的消失集合。所有部分都必须被锚定。
创建三个部分。按照它们应该消失的顺序命名零件,第1部分、第2部分、第3部分。
在 ServerScriptService 中,插入新脚本并创建一个阵列来存储零件。
local pathArray = {}在每条单线上,输入零件的名称,按其应消失的顺序排列。使用新的线为每个值输入使阅已读更容易。
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
使用带有阵列的 for 循数组
使用 for 循环来通过阵列并控制零件在阵数组中排序的速度,零件应在排序中消失的速度。
要控制零件在几秒内消失的频率,请创建一个名为 VANISH_RATE 的变量。为了测试,最好将其保持为小数。
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}创建一个 for 循环,包括以关注中/正在关注内容: 开始: partIndex = 1,数组列中第一个值的索引。 结束: #pathArray,该数组的大小。
for partIndex = 1, #pathArray doend所以在零件消失之前,在循环中添加 task.wait() 使用 VANISH_RATE 。
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)end要使零件消失,创建一个名为 whichPart 的新变量并将其设置为 partsArray[partIndex] 。然后,要消除那部分,将其 CanCollide 属性设置为 false,并将 Transparency 设置为 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)在你自己 , 尝试编写一个第二个循环,使路径再次可用,通过将每个部分的 CanCollide 属性设置为 true 和透明度设置为 0 来改变。完成后,检查您的工作与以下代码的匹配。
-- 通过使所有零件再次可行走来重置路径for partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0end测试项目以确认一旦所有部件消失,它们会回返回。
使用 while 循环重复
零件会消失并重新出现,但只有一次。要使代码继续重复,请将所有代码都嵌套在 while 循环中。
在脚本底部,创建一个新的 while 真实循环。然后, 将循环移至 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-- 获取一个列出零件在零件文件夹中的阵列local partsArray = partsFolder:GetChildren()使用 in ipairs(ArrayToUse) 与 for 循环去通过 partsArray 并添加粒子。
完成的脚本-- 获取一个列出零件在零件文件夹中的阵列local partsArray = partsFolder:GetChildren()-- 向阵列中的每个部分添加粒数组for index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
测试并观察文件夹中的每个部分上升的粒子。
摘要
循环可以与阵列结合以快速处理任何数量的值。如果您想对几个部件发生的事情和顺序进行准确控制,阵列必须用特定值进行硬编码。
要与许多部分进行工作,其中订单不重要,GetChildren()可以创建一个对象的子集阵列。使用 ipairs() , 列表可以快速遍历而不需要知道阵数组的大小。