پریفب (Prefab) در یونیتی چیست ؟
تو این مقاله کوتاه قراره بفهمیم پریفب (Prefab) در یونیتی چیه و کجا کاربرد داره .
فرض کنین که میخوایم بازی مثل کلش اف کلانز بسازیم. تو بازی ما به برج های مراقبت احتیاج داریم .پس همچین چیزی میسازیم :
وقتی بازیکن بازی رو شروع میکنه ، معمولا اولش هیچ برجی تو بازی هنوز نیست. ولی ما میخوایم برج هارو یکجایی ذخیره کنیم و بعدا با شروع بازی و هر زمان که کاربر خواست برج ها ساخته بشن.
این دقیقا همون مفهوم Prefab هست .
ساخت یک Prefab
خب بیاین یک پریفب بسازیم .
این کار خیلی آسونه فقط کافیه شی که تو پنل سلسله مراتب (Hierachy) هست رو بکشین تو پنل پروژه . این شکلی :
بعد از این میتونین پریفب رو داخل پروژه ببینین.
خب حالا میتونیم شی برج رو از بازیمون حذف کنیم . (از پنل هایراکی) . بنابراین دیگه تو دنیای بازی ما نیست .
بارگذاری یک پریفب در بازی
اگر قصد داریم یک پریفب رو لود کنیم ، دو راه داریم .
یک اینکه خودمون شی رو داخل بازی بکشیم و به هایراکی اضافه کنیم .
و راه دوم اینکه از کدنویسی و نوشتن Instantiate استفاده کنیم .
این یک نمونه کد هست که همون ابتدای بازی پریفب رو داخل بازی بارگذاری میکنه .
1 2 3 4 5 6 7 8 |
public class creatingPrefab : MonoBehaviour { public GameObject pref; void Start() { Instantiate(pref, transform.position, Quaternion.identity); } } |
ما Instantiate رو داخل تابع start ساختیم . شما با توجه به نیازتون ممکنه در تابع اپدیت یا هرجای دیگه ای بنویسید .
تابع instantiate شکل های تعریف مختلفی داره مثلا :
این تمام حالاتی هست که میتونه داشته باشه . شیوه ای که ما برای تعریف استفاده کردیم رایجترین مدلشه .
اولین مقداری که به تابع داده میشه شی یا همون پریفبمونه .مورد بعدی مشخص میکنه شی که تو بازی قراره ساخته بشه کجا باشه ما نوشتیم transform.position یعنی جایی که شی *this* هست . و در نهایت مورد اخرچرخش شی رو مشخص میکنه quaternion.identity یعنی چرخش پیش فرضی داره.
یک شی عمومی به اسم pref ساختیم . حالا تنها کار اینه که از داخل اینسپکتور پریفب مورد نظر رو به کد بدیم . این شکلی :
با شروع بازی میبینین که پریفبتون همون ابتدا تو بازی ساخته میشه.
به همین اسونی !
منبع : Noobtuts