Menu
CoddyTech

الإظهار والإخفاء

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

يُعطّل 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()، لكن الكائن يظل في المشهد، ويظل مرئيًا ويصطدم بالأشياء، وتواصل مكوّناته الأخرى العمل.

challenge icon

التحدي

متوسط

اجعل مفتاح المسافة يُخفي الجسر ويُعيده.

  1. داخل Update()، عند Input.GetKeyDown(KeyCode.Space)، استدعِ bridge.SetActive(...) للتبديل بين حالتي الجسر بأكمله، بما في ذلك المصادم.
  2. مرّر الحالة المعاكسة: bridge.SetActive(!bridge.activeSelf);.

اضغط «العب» واضغط على مفتاح المسافة بضع مرات: سيختفي الجسر ثم يعود. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

public class BridgeSwitch : MonoBehaviour
{
    public GameObject bridge;

    void Update()
    {
        // يخفي الضغط على Space الجسر، ويُظهره الضغط التالي مجددًا
    }
}

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

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