تنفيذ تجميع الكائنات في الوحدة

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

سيرشدك هذا البرنامج التعليمي خلال تنفيذ تجميع الكائنات في Unity باستخدام C#. سنقوم بإنشاء مثال بسيط باستخدام المقذوفات التي يتم تجميعها وإعادة استخدامها.

الخطوة 1: إعداد المشروع

  1. قم بإنشاء مشروع Unity جديد أو افتح مشروعًا موجودًا.
  2. قم بإنشاء GameObject فارغ في المشهد الخاص بك ليكون بمثابة مدير لتجمع الكائنات.

الخطوة 2: كتابة البرنامج النصي لتجميع الكائنات

using System.Collections.Generic;
using UnityEngine;

public class ObjectPooler : MonoBehaviour
{
    public static ObjectPooler Instance;

    public GameObject pooledObject;
    public int pooledAmount = 20;
    List pooledObjects;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        pooledObjects = new List();
        for (int i = 0; i < pooledAmount; i++)
        {
            GameObject obj = Instantiate(pooledObject);
            obj.SetActive(false);
            pooledObjects.Add(obj);
        }
    }

    public GameObject GetPooledObject()
    {
        for (int i = 0; i < pooledObjects.Count; i++)
        {
            if (!pooledObjects[i].activeInHierarchy)
            {
                return pooledObjects[i];
            }
        }

        return null;
    }
}

الخطوة 3: إنشاء الكائن للتجميع

قم بإنشاء مبنى جاهز للكائن الذي تريد تجميعه. في هذا المثال، لنقم بإنشاء مقذوف بسيط.

  1. قم بإنشاء GameObject جديد وقم بتسميته "Projectile".
  2. قم بإرفاق مكون الجسم الصلب به للسماح بالتفاعلات الفيزيائية.
  3. اختياريًا، قم بإرفاق مكون Collider لاكتشاف الاصطدامات.
  4. اسحب GameObject إلى مجلد الأصول لإنشاء مبنى جاهز.

الخطوة 4: استخدام مجمع الكائنات

using UnityEngine;

public class ProjectileSpawner : MonoBehaviour
{
    public float fireRate = 0.5f;
    float nextFire = 0.0f;

    void Update()
    {
        if (Input.GetButtonDown("Fire1") && Time.time > nextFire)
        {
            nextFire = Time.time + fireRate;
            SpawnProjectile();
        }
    }

    void SpawnProjectile()
    {
        GameObject projectile = ObjectPooler.Instance.GetPooledObject();

        if (projectile != null)
        {
            projectile.transform.position = transform.position;
            projectile.transform.rotation = transform.rotation;
            projectile.SetActive(true);
        }
    }
}

الخطوة 5: الاختبار

  1. قم بإرفاق البرنامج النصي 'ProjectileSpawner' بأي كائن GameObject في المشهد الخاص بك.
  2. قم بتعيين هيكل المقذوف الجاهز إلى الحقل 'pooledObject' في مكون 'ObjectPooler' في مدير GameObject.
  3. قم بتشغيل اللعبة واضغط على زر إطلاق النار (بافتراض "Fire1") لتفرخ المقذوفات.

خاتمة

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

المقالات المقترحة
تنفيذ التفاعلات الحركية في الوحدة
إنشاء محاكي الصيد في الوحدة
البرنامج النصي للاستيلاء على الكائنات في الوحدة
إنشاء نظام جرد وصياغة العناصر في الوحدة
تنفيذ الموقتات في الوحدة
كيفية إنشاء كائن اتبع مؤشر الماوس في الوحدة
إنشاء كائنات تفاعلية في الوحدة