المصفوفات يمكن دمجها مع الحلقات، مثل while و for، لتكرار نفس الكود لكل قيمة مفهرسة. على سبيل المثال، نقل كل لاعب في مصفوفة إلى مكان جديد أو جعل مصفوفة من الأجزاء تشتعل.
لاستكشاف التكرار عبر المصفوفات، أنشئ جسرًا يختفي حيث يتم وضع الأجزاء في مصفوفة ثم جعلها تختفي واحدة تلو الأخرى.
المرور عبر مصفوفة
للمشروع، ابحث أو أنشئ مجموعة من ثلاثة أجزاء لجعلها تختفي. يجب أن تكون الأجزاء جميعها مثبتة.
أنشئ ثلاثة أجزاء. سم الأجزاء بالترتيب الذي يجب أن تختفي به، Part1، Part2، Part3.
في 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)، في بداية النص.
برمجة الحلقة الثانية
الآن، الأجزاء تختفي إلى الأبد. لجعلها تعود، أنشئ حلقة for ثانية ستقوم بالمرور عبر كل جزء وجعل كل قطعة قابلة للمشي على الفور.
بعد الحلقة الأولى، أضف task.wait() لإنشاء تأخير قصير قبل أن يظهر المسار مرة أخرى.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)بمفردك، حاول برمجة حلقة for ثانية تجعل المسار قابلًا للاستخدام مرة أخرى عن طريق تغيير خاصية CanCollide لكل جزء إلى true و Transparency إلى 0. عند الانتهاء، تحقق من عملك مقابل الكود أدناه.
-- إعادة تعيين المسار عن طريق جعل جميع الأجزاء قابلة للمشي مرة أخرىfor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endاختبر المشروع لتأكيد أنه بمجرد اختفاء جميع الأجزاء، تعود مرة أخرى.
التكرار باستخدام حلقة while
الأجزاء تختفي وتظهر، ولكن مرة واحدة فقط. لجعل الكود يستمر في التكرار، قم بتعشيش كل الكود داخل حلقة while.
في أسفل النص، أنشئ حلقة while true do جديدة. ثم، انقل كلا الحلقتين for إلى داخل حلقة 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.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() تُستخدم مع المصفوفات. "i" في ipairs() تعني "الفهرس". يمكن استخدام ipairs() لتكرار عملية بسرعة على عدد كبير من الكائنات، مثل، على سبيل المثال، مجلد مليء بالأجزاء.
سيتم توضيح ذلك من خلال إضافة جزيئات بسرعة إلى مجلد كامل من الأجزاء.
في Workspace، أنشئ مجلدًا باسم PartsFolder. أضف أي عدد من الأجزاء كما تريد.
في ServerScriptService، أنشئ نصًا جديدًا وأشر إلى المجلد.
استخدم GetChildren() للحصول على مصفوفة تلقائيًا تسرد جميع الكائنات في المجلد.
local partsFolder = workspace.PartsFolder-- يحصل على مصفوفة تسرد الأجزاء في PartsFolderlocal partsArray = partsFolder:GetChildren()استخدم in ipairs(ArrayToUse) مع حلقة for للمرور عبر partsArray وإضافة الجزيئات.
النص المكتمل-- يحصل على مصفوفة تسرد الأجزاء في PartsFolderlocal partsArray = partsFolder:GetChildren()-- يضيف الجزيئات إلى كل جزء في المصفوفةfor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
اختبر اللعبة وشاهد الجزيئات تطفو من كل جزء في المجلد.
الملخص
يمكن دمج الحلقات مع المصفوفات للعمل مع أي عدد من القيم بسرعة. إذا كنت ترغب في التحكم الدقيق فيما يحدث لعدد قليل من الأجزاء وبأي ترتيب، يجب أن تكون المصفوفة مشفرة بقيم محددة.
للتعامل مع العديد من الأجزاء حيث لا يهم الترتيب، يمكن أن ينشئ GetChildren() مصفوفة من أطفال كائن ما. باستخدام ipairs()، يمكن تكرار القائمة بسرعة دون معرفة حجم المصفوفة.