در هر بازی متغیرها و دادههایی وجود داره که میخواید در تمام صحنههای بازی بهشون دسترسی داشته باشید. برای این منظور باید از اسکریپتهایی استفاده کنید که از همه اسکریپتها و صحنهها قابل دسترسی هستن. به این قابلیت در انجین بازی گودو میگن اتولود (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 دسترسی داشته باشیم.
کد نویسی اسکریپت Main
کاری که توی این کد انجام میشه اینه که در فانکشن یا تابع ready ، به لیبل ارجاع میدم و متنشو برابر با متن متغیر text از اسکریپت general میکنم.( تابع ready یکی از تابع های پیش ساخته گودوئه و هر اسکریپتی در شروع صحنه، تابع ready رو اجرا میکنه. )

اگه دقت کنید از str استفاده کردم. این تابع تبدیل به رشته یا متنه. وقتی میخواید یه مقدار عددی رو جایی نمایش بدید یا به متن تبدیل کنید، یا وقتی که میخواید متغیری رو در لیبل نمایش بدید، عادت کنید که از این تابع استفاده کنید، در غیر این صورت با پیام خطا روبرو میشید. General.text درواقع همون متغیریه که توی اسکریپت جنرال بود.
در نهایت وقتی صحنه رو اجرا کنیم، داخل لیبل متن General text نشون داده میشه.

فایده اتولود اینه که شما رو از دوبارهکاری بی نیاز میکنه. فرض کنید 10 تا صحنه داشتید که میخواستید اون متن رو توی همشون نشون بدید. باید در هر 10 تا صحنه متغیری میساختید. ولی با این روش یک بار نوشتید و میتونید 10 بار یا بیشتر استفاده کنید.
درآخر کدها رو میذارم تا داشته باشید.
کد اسکریپت General:
extends Node
var text = "General text"
کد اسکریپت Main:
extends Node2D
function _ready():
$Label.text = str(General.text)
آموزشهای قبلی: