المصفوفات يمكن دمجها مع الحلقات، مثل 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.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() تستخدم مع المصفوفات. الحرف "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()، يمكن تكرار القائمة بسرعة دون معرفة حجم المصفوفة.