Kategorie
Samouczki

Gra Air Combat – Dane globalne w Autoładowaniu – 5

Często jest tak, że chcemy by niektóre dane były dostępne w całej grze. Domyślnie, większość danych jest dołączona do danej sceny więc kasuje się gdy scena zostaje zlikwidowana. Więc, w jaki sposób stworzyć dane, które będą dostępne przez cały cykl życia naszej gry? Odpowiedzią na to pytanie jest Autoload.

Najpierw musimy stworzyć plik skryptu GDScript. Przełączamy się na kartę Script, a następnie wybieramy Plik->Nowy skrypt (File->New Script).

W okienku Utwórz Skrypt w polu Ścieżka (Path) wpisujemy nazwę pliku. Plik nazwijmy globals.gd (albo inaczej, jak sam wolisz, plik musi mieć tylko rozszerzenie .gd). Klikamy Utwórz (Create).

Teraz wpisz poniższy kod:

extends Node

var currentStage = 1
var kills = 0

Ten kod jest prostą deklaracją dwóch zmiennych globalnych, CurrentStage oraz kills. Skrypt MUSI rozszerzać Node inaczej nie załaduje się. Mówiąc o załadowaniu, chcemy powiedzieć Godotowi by załadował skrypt gdy tylko nasza gra wystartuje. Wróć teraz do menu Projekt->Ustawienia Projektu (Project->Settings), a następnie wybierz kartę Autoładowanie (AutoLoad).

Kliknij ikonę po prawej stronie pola Ścieżka (Path) i wybierz nasz nowo utworzony plik globals.gd.

Na koniec, kliknij przycisk Dodaj (Add) i powinieneś zobaczyć taki oto widok:

Teraz kiedy mamy dostępnych kilka zmiennych globalnych, zresetujmy ich wartości przy ładowaniu sceny tytułowej. Jest to przydatne, gdyż resetuje naszą grę za każdym razem gdy wracamy na ekran tytułowy. Otwórz scenę TitleScene w widoku 2D jeśli nie jest otwarta. Teraz dodamy skrypt do węzła kontrolnego naszej sceny. Wybierz Węzeł Control, następnie kliknij ikonę skryptu ze znakiem + znajdującą się po prawej stronie by stworzyć nowy skrypt.

Wszystkie domyślnie wartości są właściwe, więc klikamy Utwórz (Create).

Edytor kodu powinien otworzyć się automatycznie (jeśli nie, możesz otworzyć go klikając ikonę zwoju po prawej stronie węzła Control). Popraw kod by wyglądał tak jak poniższy:

extends Control

func _ready():
  globals.kills = 0
  globals.currentStage = 0

Jak widzisz możemy uzyskać dostęp do stworzonych przez nas zmiennych globalnych podając Nazwę węzła (Node Name), którą podaliśmy w ustawieniach Autoładowania (AutoLoad), następnie wpisując kropkę i nazwę zmiennej. Mimo iż ten przykład jest trywialny, to jednak zmienne globalne są niezmiernie przydatne, ale bądź ostrożny i nie nadużywaj ich!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *