كيفية التحكم في عدة أضواء فيراي باستخدام العدادات الدوارة في ماكس سكريبت

2026 February 09 | مترجم من الإسبانية
Captura de interfaz de 3ds Max mostrando múltiples spinners controlando parámetros de diferentes luces V-Ray, con el editor de MaxScript visible.

معضلة العداد الدوار المتمرد في MaxScript 🎚️💡

¡Vaya lío de luces y spinners te has montado! يبدو أن عناصر التحكم الخاصة بك تلعب لعبة "الأخير الذي يدخل يفوز". دعنا نحل هذه المشكلة في هوية العدادات الدوارة كمحققين جيدين في الكود.

المشكلة المفاهيمية

ما يحدث هو أن:

"معالج بدون سياق مثل مفتاح بدون أسلاك: ينقر لكنه لا يضيء شيئًا مفيدًا"

الحل التقني

تحتاج إلى إنشاء closures لالتقاط السياق الصحيح. جرب هذا النهج:

for i = 1 to mat_sel.count do (
    local currentLight = mat_sel[i]  -- Captura la luz actual
    local spinnerName = ("spin_" + (i as string)) as name
    local lightName = (currentLight.name + ": ") as string
    
    -- Crea el spinner con el valor actual
    samp.addControl #spinner spinnerName lightName paramStr type:#integer range:[0,100, currentLight.subdivisiones] fieldWidth:40 align:#center
    
    -- Handler con closure que captura la luz correcta
    on spinnerName changed val do (
        currentLight.subdivisiones = val
    )
)

الشرح الرئيسي

  1. التقاط السياق بمتغير محلي في كل تكرار
  2. استخدام closures حتى تتذكر المعالج (handler) أي ضوء تعديل
  3. تجنب المراجع العامة التي تُكتب فوقها

إذا لم يعمل هذا (أحيانًا نظام المعالجات في MaxScript خاص)، خيار آخر هو:

تذكر: في MaxScript، كما في الحياة، السياق هو كل شيء. ¡Que tus spinners iluminen el camino correcto! 💡 وإذا فشل كل شيء، يمكنك دائمًا أن تفعل كما في الأفلام: "¡Más luces!" (رغم أن الرندر سيستغرق أبدية بعد ذلك).