الإظهار والإخفاء
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 34 من 67.
يُوقف SetActive(false) كائنَ GameObject بالكامل: فلا يُرسم، ولا يعود يصطدم، وتتوقف السكربتات الموجودة عليه عن تلقي استدعاءات Update()، كما تتوقف الكائنات الأبناء معه. يعيد SetActive(true) كل شيء، ويُبيّن activeSelf ما إذا كان مفعّلًا. يخفي هذا السكربت الموجود على زر الباب في الحقل door عند النقر بزر الفأرة:
public GameObject door;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
door.SetActive(false);
}
}لا يستطيع سكربت يخفي كائنه بنفسه باستخدام gameObject.SetActive(false) إعادته، لأن Update() لم يعد يُنفّذ. لذا يكون المفتاح على كائن آخر، مع مرجع إلى الكائن الذي يُظهره ويخفيه.
يُعطّل enabled مكوّنًا واحدًا ويترك بقية الكائن كما هي. تجعل GetComponent<Renderer>().enabled = false الكائن غير مرئي، لكن المصادم الخاص به يظل يعيق الأشياء: كجدار غير مرئي. لا يتلقى السكربت الذي ضُبطت له enabled = false أي استدعاءات أخرى لـ Update()، لكن الكائن يبقى في المشهد، ويظل مرئيًا ويصطدم بالأشياء، وتستمر مكوّناته الأخرى في العمل.
التحدي
متوسطيحتفظ البرنامج النصي للرافعة بالجسر في الحقل bridge. اجعل مفتاح المسافة يتحكم في الجسر: الضغطة الأولى تخفيه، والضغطة التالية تعيده، وهكذا، فتبديل واحد مع كل ضغطة.
أخفِ الجسر بأكمله، بما في ذلك المصادم، حتى لا يستطيع أحد الوقوف على جسر غير موجود.
اضغط على Play، واضغط على مفتاح المسافة بضع مرات، ثم اضغط على Check.
جرّب بنفسك
using UnityEngine;
public class BridgeSwitch : MonoBehaviour
{
public GameObject bridge;
void Update()
{
// يُخفي الضغط على Space الجسر، ويُظهره الضغط التالي مرة أخرى
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر