نظرة عامة على نظام الإدخال الجديد في Unity

يوفر نظام الإدخال الجديد في Unity أسلوبًا محدثًا ومرنًا وأكثر سهولة في التعامل مع المدخلات في الألعاب. باستخدام هذا النظام، يمكن للمطورين تلبية احتياجات مجموعة متنوعة من الأجهزة، بدءًا من وحدات التحكم في الألعاب وحتى أجهزة الواقع الافتراضي، مما يجعل اللعب أكثر ديناميكية وغامرة.

1. لماذا النظام الجديد

كان نظام الإدخال التقليدي في Unity محدودًا في قدراته وغير قابل للتوسعة. يقدم نظام الإدخال الجديد واجهة برمجة تطبيقات موحدة تعالج القيود السابقة وتوفر ميزات متقدمة لتطوير الألعاب الحديثة.

2. اعداد

لبدء استخدام نظام الإدخال الجديد، يجب أولاً تثبيته من مدير الحزم في Unity. بمجرد الإضافة، يتطلب الانتقال من النظام القديم تعديلات معينة في البرامج النصية والإعدادات.

3. دلائل الميزات

  • الإجراءات والارتباطات: بدلاً من الإشارة مباشرةً إلى الأزرار أو المفاتيح، يقوم المطورون بتعريف الإجراءات، ثم ربط تلك الإجراءات بمفاتيح أو أزرار محددة.
  • تنوع الأجهزة: يدعم بسهولة أجهزة متعددة، بدءًا من لوحات الألعاب التقليدية وحتى شاشات اللمس وهواتف الواقع الافتراضي.
  • عناصر التحكم في المشغل: توفر آلية مدمجة لإعادة ربط عناصر التحكم، مما يسمح للاعبين بإعداد عناصر التحكم كما هو مفضل.
  • المعالجة المتقدمة للأحداث: الأحداث يمكن معالجتها بطرق مختلفة، سواء كانت قائمة على الاستقصاء أو تعتمد على رد الاتصال، مما يمنح مزيدًا من التحكم.

4. إنشاء إجراء الإدخال

إجراء الإدخال هو نوع أصول جديد يسمح بتعريف سلوكيات الإدخال دون الحاجة إلى كتابة نصوص برمجية. بمجرد إنشائه، يمكن إدراجه في برنامج نصي، مما يربط طريقة اللعب مباشرة بمدخلات اللاعب.

5. التنفيذ في البرمجة النصية

  • يتكامل نظام الإدخال الجديد بسلاسة مع بيئة البرمجة النصية Unity. بدلاً من الأساليب القديمة 'Input.GetKey' أو 'Input.GetAxis'، يستخدم هذا النظام "إجراءات" يمكن استدعاؤها داخل البرامج النصية. تحقق من المثال أدناه:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

دعنا نحلل مثال الكود المقدم أعلاه:

  • مساحات الاسم: مساحة الاسم 'UnityEngine.InputSystem' ضرورية لاستخدام الوظائف الجديدة.
  • 'moveInput': يقوم هذا المتغير بتخزين قيم الإدخال، والتي تمثل عادة المدخلات الأفقية والرأسية.
  • 'OnMove()': تم تعريفها كوظيفة عامة، ويمكن ربط 'OnMove' مباشرة بإجراء الإدخال في محرر Unity. تستخدم الطريقة 'InputAction.CallbackContext' لقراءة قيم الإدخال وتعيينها لمتغيرنا 'moveInput'.
  • 'Update()': في طريقة 'Update'، تحدد قيم الإدخال المخزنة اتجاه الحركة. تتم ترجمة الإدخال إلى ناقل ثلاثي الأبعاد لحركة الشخصية، مع الأخذ في الاعتبار السرعة المحددة و Unity 'Time.deltaTime' للحركة المستقلة عن الإطار.

لكي يعمل هذا البرنامج النصي، من المهم ربط الأسلوب 'OnMove' بإجراء الإدخال عبر محرر Unity. يضمن هذا الاتصال أنه عندما يقدم اللاعب إدخالاً (مثل تحريك عصا التحكم أو الضغط على مفاتيح الأسهم)، يؤدي الإجراء المقابل إلى تشغيل البرنامج النصي المطلوب function.

خاتمة

يعد نظام الإدخال الجديد في Unity تطورًا قويًا وضروريًا، يتماشى مع احتياجات تطوير الألعاب الحديثة. فهو يوفر تنوعًا ودقة وتخصيصًا للمستخدم، مما يجعل اللعبة التفاعلات أكثر جاذبية واستجابة.