W Godot, enum
to specjalny typ danych, który pozwala na definiowanie nazwanych stałych wartości liczbowych. Dzięki niemu możesz przypisywać intuicyjne nazwy liczbom całkowitym, co ułatwia czytelność kodu oraz jego zarządzanie. Użycie enum
w Godot jest podobne do jego odpowiedników w innych językach programowania, takich jak C# czy Java.

Definiowanie enum
w Godot
enum
w Godot można zdefiniować w sposób następujący:
enum WeaponType { SWORD, AXE, BOW }
var current_weapon = WeaponType.SWORD
W powyższym przykładzie zdefiniowaliśmy enum
o nazwie WeaponType
, w którym mamy trzy typy broni: SWORD
, AXE
oraz BOW
. Te wartości są automatycznie przypisywane do liczb całkowitych, zaczynając od 0 (czyli SWORD
ma wartość 0, AXE
ma 1, a BOW
ma 2).
Używanie wartości enum
Kiedy mamy zdefiniowany enum
, możemy używać jego wartości jako zmiennych:
if current_weapon == WeaponType.SWORD:
print("Postać używa miecza!")
elif current_weapon == WeaponType.AXE:
print("Postać używa topora!")
To pozwala na łatwe porównywanie i sprawdzanie stanów obiektu na podstawie jego typu.
Dodatkowe zastosowania
Możemy przypisywać konkretne wartości do elementów enum
, co daje większą kontrolę nad ich wartością:
enum StatusCode { OK = 200, NOT_FOUND = 404, INTERNAL_ERROR = 500 }
var current_status = StatusCode.OK
W tym przykładzie, OK
ma wartość 200, NOT_FOUND
ma 404, a INTERNAL_ERROR
ma 500. Jest to szczególnie przydatne w przypadku kodów stanów lub zdefiniowanych kategorii, które mają specyficzne znaczenia.
Korzyści z używania enum
:
- Poprawia czytelność kodu – zamiast korzystać z liczbowych wartości magicznych, możesz używać nazwanych stałych.
- Łatwiejsze zarządzanie stanami – szczególnie przydatne w przypadku złożonych logik, np. stanów graczy, typów broni czy elementów interfejsu.
- Bezpieczeństwo typów – korzystając z
enum
, zmniejszasz ryzyko przypisania nieprawidłowej wartości liczbowej.
Przykład zaawansowany:
enum GameState { MENU, PLAYING, PAUSED, GAME_OVER }
var current_state = GameState.MENU
func _process(delta):
match current_state:
GameState.MENU:
print("W menu głównym")
GameState.PLAYING:
print("Gra w toku")
GameState.PAUSED:
print("Gra jest wstrzymana")
GameState.GAME_OVER:
print("Koniec gry")
W tym przykładzie enum
jest używany do zarządzania stanem gry.
Dodaj komentarz