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