در هر بازی متغیرها و دادههایی وجود داره که میخواید در تمام صحنههای بازی بهشون دسترسی داشته باشید. برای این منظور باید از اسکریپتهایی استفاده کنید که از همه اسکریپتها و صحنهها قابل دسترسی هستن. به این قابلیت در گودو میگن اتولود (autoload). کاری که باید کنید اینه که یه اسکریپت ایجاد کنید و اون رو اتولود کنید و در اسکریپتهای دیگه بهش ارجاع میدید. اما چجوری؟
در یه مثال ساده این رو بهتون نشون میدم.
اول از همه یه پروژه جدید ایجاد کنید و یه نود دوبعدی و یه لیبل زیر مجموعهاش ایجاد کنید. صحنه رو ذخیره کنید و نام main بهش بدید. اینکارها رو در آموزشهای قبلی یاد گرفتید. ساختار صحنهتون به این شکل خواهد بود.
میخوایم اسکریپت اتولود رو بسازیم. در بخش filesystem روی res کلیک راست و بعد گزینه create new و بعد script رو انتخاب کنید.اسمشو بذارید General یعنی عمومی یا سراسری.
حالا اسکریپت جنرال رو میخوایم اتولود کنیم. از مسیرsetting و بعد project setting، تب autoload رو انتخاب میکنیم. برای اضافه کردن اسکریپت به اتولود روی آیکون فولدر کلیک میکنیم، اسکریپت General رو انتخاب میکنیم و open رو کلیک میکنیم. در نهایت سمت راست صفحه دکمه Add رو میزنیم تا اسکریپت به لیست اضافه بشه.
برای نشون داده استفاده از اتولود، به نود سرشاخه یه اسکریپت اضافه کنید. دقت کنید که حالا در کل پروژه 2 تا اسکریپت داریم.
توی این قسمت میخوایم داخل اسکریپ General یه متغیر ساده اضافه کنیم تا بتونیم توی اسکریپت main ازش استفاده کنیم و متن اون رو توی لیبل نشون بدیم. اینجا میخوام نحوه تایپ و کدنوشتن هم بهتون نشون بدم. گاهی اوقات وقتی بخشی از کلمه رو تایپ میکنید، برنامه به شما کلمه رو پیشنهاد میده و با کلید Enter میتونید انتخابش کنید. یه متغیر به نام text میسازم و مقدارشو (متنشو) میذارم "General text". متنها همیشه در کدنویسی گودو بین دوتا علامت " قرار میگیرن.
حالا توی اسکریپت main از متغیری که توی اسکریپت general هست استفاده میکنیم. دقت کنید که هر چندتا اسکریپت دیگه هم داشتیم و حتی اگه در صحنه های دیگه هم بودن، میتونستیم به متغیرهای General دسترسی داشته باشیم.
کاری که توی این کد انجام میشه اینه که در فانکشن یا تابع ready ، به لیبل ارجاع میدم و متنشو برابر با متن متغیر text از اسکریپت general میکنم.( تابع ready یکی از تابع های پیش ساخته گودوئه و هر اسکریپتی در شروع صحنه، تابع ready رو اجرا میکنه. )
اگه دقت کنید از str استفاده کردم. این تابع تبدیل به رشته یا متنه. وقتی میخواید یه مقدار عددی رو جایی نمایش بدید یا به متن تبدیل کنید، یا وقتی که میخواید متغیری رو در لیبل نمایش بدید، عادت کنید که از این تابع استفاده کنید، در غیر این صورت با پیام خطا روبرو میشید. General.text درواقع همون متغیریه که توی اسکریپت جنرال بود.
در نهایت وقتی صحنه رو اجرا کنیم، داخل لیبل متن General text نشون داده میشه.
فایده اتولود اینه که شما رو از دوبارهکاری بی نیاز میکنه. فرض کنید 10 تا صحنه داشتید که میخواستید اون متن رو توی همشون نشون بدید. باید در هر 10 تا صحنه متغیری میساختید. ولی با این روش یک بار نوشتید و میتونید 10 بار یا بیشتر استفاده کنید.
درآخر کدها رو میذارم تا داشته باشید.
...