Zmienna eksport jako zmienna globalna

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

  1. 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"
  1. 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.
  1. 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

  1. 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.
  1. Ł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

  1. 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.
  1. 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.


Komentarze

Dodaj komentarz

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