Zmiana trybu okna z full screen na window (przycisk).

in polish •  last month  (edited)

Skrypt steruje oknem w Godot, przełączając między trybem pełnoekranowym a zmaksymalizowanym oknem po naciśnięciu przycisku. Działa to na zasadzie:

  • Ustawienia trybu pełnoekranowego w metodzie _ready(), które zostanie aktywowane, gdy scena się załaduje.
  • Funkcja _toggle_fullscreen() poprawnie przełącza okno między trybem pełnoekranowym a zmaksymalizowanym.

Kod GDScript

extends Button

# Wskaźnik na obiekt okna
var window

func _ready() -> void:
    # Ustawienie wskaźnika na okno
    window = get_window()

    # Połączenie sygnału kliknięcia przycisku z funkcją zmiany trybu pełnoekranowego
    pressed.connect(_toggle_fullscreen)

    # Ustawienie pełnoekranowego trybu i właściwości skalowania
    window.mode = Window.MODE_FULLSCREEN
    window.content_scale_aspect = Window.CONTENT_SCALE_ASPECT_KEEP
    window.content_scale_mode = Window.CONTENT_SCALE_MODE_CANVAS_ITEMS
    window.content_scale_size = Vector2i(1920, 1080)


func _toggle_fullscreen() -> void:
    # Przełączanie między trybem pełnoekranowym a zmaksymalizowanym oknem
    if window.mode != Window.MODE_FULLSCREEN:
        window.mode = Window.MODE_FULLSCREEN
    else:
        window.mode = Window.MODE_MAXIMIZED

Dodatkowe

  1. Obsługa wyjścia z pełnego ekranu: Możesz rozważyć dodanie innej metody wyjścia z pełnego ekranu, np. obsługi klawisza ESC do powrotu do trybu okna:
func _input(event: InputEvent) -> void:
	if event is InputEventKey and event.pressed:
		if event.keycode == KEY_ESCAPE:
			window.mode = Window.MODE_MAXIMIZED

Ważne jednak aby zadeklarować klawisz KEY_ESCAPE w ustawieniach projektu. W tym celu wchodzimy do projekt>Ustawienia projektu i znajdujemy zakładkę Mapowanie wejścia gdzie dodajemy KEY_ESCAPE i przypisujemy mu klawisz Escape:

  1. Zachowanie rozdzielczości: Jeśli w trybie pełnoekranowym chcesz, by rozdzielczość automatycznie dostosowywała się do rozdzielczości ekranu, warto rozważyć dodatkowe sprawdzenie rzeczywistej rozdzielczości ekranu:
window.content_scale_size = window.size
  1. Obsługa różnych proporcji ekranu: Jeśli tworzysz grę na różne platformy o różnych proporcjach ekranu, dobrze jest zwrócić uwagę na skalowanie elementów interfejsu użytkownika, aby nie rozciągały się nieproporcjonalnie na różnych urządzeniach. W Godot 4.x możesz uzyskać rzeczywistą rozdzielczość ekranu, a następnie dostosować rozmiar zawartości okna do tej rozdzielczości za pomocą właściwości window.size oraz get_screen_size():
extends Button

var window

func _ready() -> void:
    # Ustawienie wskaźnika na okno
    window = get_window()

    # Połączenie sygnału kliknięcia przycisku z funkcją zmiany trybu pełnoekranowego
    pressed.connect(_toggle_fullscreen)

    # Ustawienie pełnoekranowego trybu
    window.mode = Window.MODE_FULLSCREEN

    # Dostosowanie rozdzielczości okna do rozmiaru ekranu
    _adjust_resolution()

func _adjust_resolution() -> void:
    # Pobranie rozdzielczości ekranu (w trybie pełnoekranowym)
    var screen_size = window.get_screen_size()
    
    # Dostosowanie rozmiaru okna do rozdzielczości ekranu
    window.content_scale_size = screen_size

func _toggle_fullscreen() -> void:
    # Przełączanie między trybem pełnoekranowym a zmaksymalizowanym oknem
    if window.mode != Window.MODE_FULLSCREEN:
        window.mode = Window.MODE_FULLSCREEN
        _adjust_resolution()  # Dostosowanie rozdzielczości przy przejściu na pełny ekran
    else:
        window.mode = Window.MODE_MAXIMIZED

Wyjaśnienia:

  • window.get_screen_size(): Pobiera aktualną rozdzielczość ekranu, na którym znajduje się okno. Jest to przydatne do dynamicznego dostosowania rozdzielczości gry w trybie pełnoekranowym.
  • window.content_scale_size = screen_size: Dostosowuje rozmiar treści w oknie do rozmiaru ekranu, zapewniając, że wszystko będzie odpowiednio przeskalowane.

Ten kod automatycznie dostosuje rozdzielczość gry w trybie pełnoekranowym do aktualnej rozdzielczości ekranu.

Jeśli jednak Twoje potrzeby ograniczają się do podstawowego przełączania między trybem pełnoekranowym i zmaksymalizowanym oknem oraz zachowania skalowania, ten kod spełnia swoje zadanie i jest wystarczający.

---
Published using WordPress Blurt Publisher from https://godot.com.pl.
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!