W Godot możesz używać zmiennych eksportowanych jako zmiennych globalnych, ale wymaga to pewnego podejścia, ponieważ @export
zmienne są lokalne dla węzła, do którego są przypisane. Aby osiągnąć efekt globalnych zmiennych, możesz zastosować kilka metod:

1. Używanie Singletonów (Autoload)
Najpopularniejszą metodą do tworzenia globalnych zmiennych w Godot jest używanie singletonów (autoload). Singletony to skrypty, które są ładowane na początku gry i dostępne globalnie.
Przykład
- Tworzenie Singletona:
- Stwórz nowy skrypt, na przykład
Global.gd
, i umieść w nim zmienne, które chcesz mieć globalnie.
# Global.gd
extends Node
@export var damage: float = 10.0
@export var player_name: String = "Player"
- Dodawanie Singletona do Autoload:
- Przejdź do
Project
>Project Settings
>Autoload
. - Dodaj nowy element, wybierając
Global.gd
jako ścieżkę i nadaj mu nazwę, np.Global
.
- Używanie Singletona: W dowolnym skrypcie możesz teraz uzyskać dostęp do globalnych zmiennych w singletonie:
# InnySkrypt.gd
func _ready():
var global_damage = Global.damage
var global_name = Global.player_name
print("Obrażenia globalne: ", global_damage)
print("Imię gracza globalne: ", global_name)
2. Przechowywanie Zmiennych w Zasobach
Możesz również stworzyć zasoby, które będą przechowywać dane globalne i załadować je w razie potrzeby.
Przykład
- Tworzenie Zasobu:
- Stwórz nowy zasób typu
Script
i nazwij go np.GlobalData.gd
.
# GlobalData.gd
extends Resource
@export var damage: float = 10.0
@export var player_name: String = "Player"
- Zapisz ten zasób jako
res://global_data.tres
.
- Ładowanie Zasobu:
- W skrypcie, gdzie potrzebujesz globalnych zmiennych, załaduj zasób:
# InnySkrypt.gd
var global_data = preload("res://global_data.tres")
func _ready():
var global_damage = global_data.damage
var global_name = global_data.player_name
print("Obrażenia globalne: ", global_damage)
print("Imię gracza globalne: ", global_name)
3. Przekazywanie Zmiennych przez Globalne Funkcje
Możesz także stworzyć globalne funkcje, które będą zarządzać dostępem do zmiennych.
Przykład
- Tworzenie Globalnych Funkcji:
- Stwórz skrypt
GlobalFunctions.gd
:
# GlobalFunctions.gd
extends Node
var damage: float = 10.0
func get_damage() -> float:
return damage
func set_damage(value: float):
damage = value
- Dodaj
GlobalFunctions.gd
do Autoload w ustawieniach projektu.
- Używanie Funkcji:
- W skryptach możesz teraz korzystać z globalnych funkcji:
# InnySkrypt.gd
func _ready():
var global_damage = GlobalFunctions.get_damage()
print("Obrażenia globalne: ", global_damage)
Podsumowanie
Chociaż zmienne eksportowane są lokalne do węzła, możesz tworzyć globalne zmienne za pomocą singletonów, zasobów lub globalnych funkcji w Godot. Singletony (autoload) są najczęściej używaną metodą do zarządzania globalnymi danymi i są wygodne w implementacji oraz użyciu.
Dodaj komentarz