Menu
CoddyTech

الإنشاء ضمن شبكة

جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 64 من 85.

تزور حلقة داخل حلقة كل خلية في شبكة: تختار الحلقة الخارجية عمودًا، وتسير الحلقة الداخلية على امتداده. ضع Instantiate داخلها، وسيحصل كل موضع على كائن. ينشئ هذا أرضية من 3 في 3 باستخدام بلاطات عرضها وحدتان، لذا تفصل بين البلاطات مسافة وحدتين:

public GameObject tilePrefab;

void Start()
{
    for (int x = 0; x < 3; x++)
    {
        for (int z = 0; z < 3; z++)
        {
            Vector3 spot = new Vector3(x * 2, 0, z * 2);
            Instantiate(tilePrefab, spot, Quaternion.identity, transform);
        }
    }
}

تقع البلاطات عند x = 0, 2, 4 وz = 0, 2, 4: تسع بلاطات، من (0, 0, 0) إلى (4, 0, 4). تعمل الحلقتان داخل Start() مرة واحدة. أما في Update() فستضيفان تسع بلاطات أخرى في كل إطار.

الوسيط الرابع هو كائن أب. ستسبب تسعة كائنات Tile(Clone) منفصلة فوضى في التسلسل الهرمي؛ أما تمرير transform فيضعها ضمن الكائن الذي يوجد عليه هذا البرنامج النصي، وهو Floor، بحيث يمكن طيّها أو نقلها معًا أو حذفها معًا. يظل الموضع الذي تمرره موضعًا عالميًا.

challenge icon

التحدي

متوسط

أنشئ جدارًا من النماذج الأولية للطوب، بعرض 4 وارتفاع 5.

  1. في Start()، كرّر الحلقة باستخدام c من 0 إلى 3، وداخلها باستخدام r من 0 إلى 4.
  2. في الحلقة الداخلية، استدعِ Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform). تجعل الوسيطة الأخيرة كل قطعة طوب عنصرًا فرعيًا من الجدار.

اضغط على «العب»: يقف جدار مكوّن من 20 قطعة طوب على الأرض. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class WallBuilder : MonoBehaviour
{
    public GameObject brickPrefab;

    void Start()
    {
        // 4 أعمدة و5 صفوف من الطوب، كل طوبة منها عنصر تابع لهذا Wall
    }
}

جميع دروس أساسيات البرمجة النصية في Unity

تدرّب بنفسك: Playground لـ Unity