قوائم الكائنات
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 51 من 67.
للمصفوفة طول ثابت يُحدَّد عند إنشائها. لا يعرف المُنشئ مسبقًا عدد الكائنات التي سينشئها، لذا يحتفظ بها في List<T>: مصفوفة C# قابلة للنمو. توجد في System.Collections.Generic، ويمثل T نوع العنصر الذي تحتويه. تحتفظ هذه النافورة بكل قطعة نقدية تنشئها:
using System.Collections.Generic;
using UnityEngine;
public class CoinFountain : MonoBehaviour
{
public GameObject coinPrefab;
List<GameObject> coins = new List<GameObject>();
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GameObject coin = Instantiate(coinPrefab, transform.position, Quaternion.identity);
coins.Add(coin);
Debug.Log(coins.Count + " coins");
}
}
}تضيف Add عنصرًا إلى النهاية، ويُظهر Count عدد العناصر، بينما تملك المصفوفة Length. تتم القراءة كما في المصفوفة: coins[0] هي أول قطعة نقدية، وتمرّ foreach (GameObject c in coins) عليها جميعًا. تزيل coins.Remove(coin) ذلك العنصر، وتزيل coins.RemoveAt(0) العنصر الأول؛ وتتحرك العناصر التي تليه إلى الأسفل بمقدار موضع واحد.
يجب إنشاء القائمة نفسها باستخدام new. الحقل المكتوب بالشكل List<GameObject> coins; يحتوي على null، وستتوقف أول عملية Add مع استثناء NullReferenceException.
التحدي
متوسطينبغي أن يتتبع Stacker الصناديق التي ينشئها:
- احتفظ بالصناديق في حقل
List<GameObject>خاص اسمهboxes. - ينشئ كل نقر صندوقًا بلا دوران ويضيفه إلى القائمة. يوضع الصندوق عند موضع المُكدِّس، مضافًا إليه 1.5 على المحور x لكل صندوق موجود بالفعل في القائمة: الأول عند موضع المُكدِّس، والثاني على بُعد 1.5 إلى يمينه، وهكذا.
- يعيد مفتاح المسافة أحدث صندوق: أخفه باستخدام
SetActive(false)وأزله من القائمة. إذا لم تكن هناك صناديق، فلن يفعل مفتاح المسافة شيئًا. - بعد كل تغيير في القائمة، سجّل
Boxes:والعدد، مثلًاBoxes: 3.
اضغط Play، وانقر واضغط مفتاح المسافة، ثم اضغط Check.
جرّب بنفسك
using UnityEngine;
public class BoxStacker : MonoBehaviour
{
public GameObject boxPrefab;
// boxes: قائمة خاصة من النوع List<GameObject>
void Update()
{
// Click: أنشئ صندوقًا على بُعد 1.5 إضافي إلى اليمين مقابل كل صندوق في القائمة، وأضفه إليها
// Space: أخفِ أحدث صندوق وأزله من القائمة
// بعد كل تغيير، سجّل "Boxes: " والعدد
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر