متغیرهای سراسری و اتولود در انجین بازی گودو

در هر بازی متغیرها و داده‌هایی وجود داره که میخواید در تمام صحنه‌های بازی بهشون دسترسی داشته باشید. برای این منظور باید از اسکریپت‌هایی استفاده کنید که از همه اسکریپت‌ها و صحنه‌ها قابل دسترسی هستن. به این قابلیت در انجین بازی گودو میگن اتولود (autoload). کاری که باید انجام بدید اینه که یه اسکریپت ایجاد کنید و اون رو اتولود کنید و در اسکریپت‌های دیگه بهش ارجاع میدید. اما چجوری؟

در این آموزش، این رو در یه مثال ساده بهتون نشون میدم.

شروع کار با یک ایجاد یک لیبل

اول از همه یه پروژه جدید ایجاد کنید و یه نود دوبعدی و یه لیبل زیر مجموعه‌اش ایجاد کنید. صحنه رو ذخیره کنید و نام main بهش بدید. این‌کارها رو در آموزش‌های قبلی یاد گرفتید. ساختار صحنه‌تون به این شکل خواهد بود.

ساختار پروژه

میخوایم اسکریپت اتولود رو بسازیم. در بخش filesystem روی res کلیک راست  و بعد گزینه create new و بعد script رو انتخاب کنید.اسمشو بذارید General یعنی عمومی یا سراسری. 

اضافه کردن اسکریپت General

حالا اسکریپت جنرال رو میخوایم اتولود کنیم. از مسیرsetting و بعد project setting، تب autoload رو انتخاب میکنیم. برای اضافه کردن اسکریپت به اتولود روی آیکون فولدر کلیک میکنیم، اسکریپت General رو انتخاب میکنیم و open رو کلیک میکنیم. در نهایت سمت راست صفحه دکمه Add رو میزنیم تا اسکریپت به لیست اضافه بشه.

اتولود کردن اسکریپت General

برای نشون دادن استفاده از اتولود، به نود سرشاخه یه اسکریپت اضافه کنید. دقت کنید که حالا در کل پروژه 2 تا اسکریپت داریم. 

۲ اسکریپت در پروژه

اضافه کردن یک متغیر

توی این قسمت میخوایم داخل اسکریپ General یه متغیر ساده اضافه کنیم تا بتونیم توی اسکریپت main ازش استفاده کنیم و متن اون رو توی لیبل نشون بدیم. اینجا میخوام نحوه تایپ و کدنوشتن رو هم بهتون نشون بدم. گاهی اوقات وقتی بخشی از کلمه رو تایپ میکنید، برنامه به شما کلمه رو پیشنهاد میده و با کلید Enter میتونید انتخابش کنید. یه متغیر به نام text میسازم و مقدارشو (متنشو) میذارم “General text”. متنها و نوشته‌ها همیشه در کدنویسی انجین بازی گودو بین دوتا علامت ” قرار میگیرن.  

کدنویسی اسکریپت Geneal

حالا توی اسکریپت main از متغیری که توی اسکریپت general هست استفاده میکنیم. دقت کنید که هر چندتا اسکریپت دیگه هم داشتیم و حتی اگه  در صحنه های دیگه هم بودن، میتونستیم از اون‌ها هم به متغیرهای General دسترسی داشته باشیم. 

کد نویسی اسکریپت Main

کاری که توی این کد انجام میشه اینه که در فانکشن یا تابع ready ، به لیبل ارجاع میدم و متنشو برابر با متن متغیر text از اسکریپت general  میکنم.( تابع ready یکی از تابع های پیش ساخته گودوئه و هر اسکریپتی در شروع صحنه، تابع ready رو اجرا میکنه. )

کدنویسی اسکریپت Main

اگه دقت کنید از 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)

آموزش‌های قبلی:

آموزش ساخت یک پروژه جدید در انجین گودو

روش‌های تغییر اندازه اسپرایت در انجین گودو

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا