در نظر بگیرید اسکرپیتی نوشتهایم و میخواهیم وقتی این اسکریپت به یک گیم آبجکت اضافه شد، به طور خودکار برخی از اسکریپتهای دیگری که تعیین کردهایم نیز به آن گیمآبجکت اضافه شود، (البته در صورت وجود نداشتن). در واقع بگوییم که اسکریپت فعلی ما به داشتن چه اسکریپتهایی در یک گیم آبجکت نیاز دارد. برای مثال، اسکریپتی به نام Player مینویسیم و میخواهیم اگر به یک گیم آبجکتی اضافه شد، آن گیمآبجکت حتما شامل کامپوننت Rigidbody باشد و بدین منظور باید برای اسکریپت Player مشخص کنیم که چه چیزهایی برای آن الزامی هستند!
برای انجام این کار، از صفت RequireComponent استفاده میشود.
نحوه پیادهسازی RequireComponent
به صورت زیر عمل میکنیم:
using UnityEngine; [RequireComponent(typeof(Rigidbody))] public class FullKade : MonoBehaviour { Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void FixedUpdate() { rb.AddForce(Vector3.up); } }
کافیست قبل از کلاس، از صفت RequireComponent طبق مثال بالا استفاده کرده و نام کامپوننت الزامی را داخل typeof ذکر کنیم. و حالا ترس این را نخواهیم داشت که شاید کامپوننت Rigidbody در آبجکت وجود نداشته باشد! چرا که آن را الزامی کردهایم و همیشه وجود خواهد داشت؛ بنابراین بدون برررسی اینکه وجود دارد یا نه، میتوانیم آن را از آبجکت گرفته و مورد استفاده قرار دهیم.
وارد کردن چند کامپوننت الزمانی
برای وارد کردن بیش از یک کامپوننت الزامی، به صورت زیر عمل میکنیم:
[RequireComponent(typeof(Rigidbody), typeof(Test))]
شما میتوانید به جای کامپوننتهای خود یونیتی، اسکریپتهایی که خودتان نوشتهاید را هم به این صورت الزامی کنید.
نظرات ثبت شده بدون دیدگاه