Niemożliwe nadeszło. UI Layery trafiły do wydania 2024.1300 beta 5 (IDE >= 768 + Runtime >= 775).
Czym są UI Layery?
UI Layer to nowy typ layerów, które jednak nie są powiązane z konkretnym roomem, a są globalne (tworząc je, widzimy je w każdym roomie który edytujemy). Działają one następująco:
- UI Layer renderowany jest pomiędzy eventami Draw GUI Begin i Draw GUI
- mają dwa typy: viewport i display. Pierwszy można przypisać do danego view (np. split screen), drugi jest globalny i rysowane są w tej własnie kolejności
- zmiana widonczności layera (normalna funkcja layerowa layer_set_visible
) powoduje dezaktywację instancji na nim (tego nie robią normalne layery)
- wszystkie elementy przypisane są do flex panelu, który pozwala na "responsywość" - zmieniając rozmiar ekranu, elementy przesuną się wg. ustawień; same flex panele działają podobnie jak flex grid w CSS - ustawia się bardziej wyśrodkowania w poziomie i pionie niż same pozycje - pozwala to przykleić elementy do rogów czy środka; zmiana rozmiaru GUI czy okna przelicza pozycję elementów
- wszystkie elementy w flexpanelu dostają pozycję x/y kursora na podstawie ustawień rozmiaru GUI, a nie roomu
- na GUI layerze można wstawic instancje, sprite, text i sekwencje (oraz oczywiście kolejne node'y flex paneli)
- event Draw GUI w obiektach na UI Layerze nie działa - zamiast tego uzywamy zwykłe draw
Kod odpowiedzialny za np. przyciski, checkboxy, listy przewijalne itp. nadal należy napisać samemu.
YYG stworzyło jednak aż 8 przykładów użycia layerów UI, które znajdziecie tutaj: github.com/YoYoGames/GameMaker-Bugs/issues/3159#issue-2072032263
Dodatkowo, w kolejnych miesiącach pojawią się prefaby które będą zawierać przykładowe gotowe do użycia komponenty, które mają wykorzystać nadchodzącą w 2024.14 nowość - będzie można zmienić sprite instancjom w roomie (zatem jeden obiekt będzie mógł mieć różne sprite).
Co jeszcze w 2024.13 Beta 5
- wsparcie dla linii i gradientów w SVG
- tworzenie obrysów przy włączonej fizyce w trakcie gry na podstawie sprite - sprite_get_convex_hull()
- Created in Gamemaker nie będzie już domyślnym tytułem gier w przypadku opcji "Run" - tytuł będzie zgodny z ustawieniami w Game Options, a domyślnie równać będzie się nazwie projektu
- interpolacja jest teraz domyślnie włączona dla nowych obiektów
- niektóre funkcje, jak layer_instance_get_instance()
zwracały -4 gdy nie znaleziono obiektu (to dawna wartość noone
). Teraz prawidłowo zwracają “ref instance -4”, więc jeśli gdzieś w kodzie używacie -4
, warto sprawdzić, czy wszystko działa jak należy (rzutowanie na liczbę powinno sprawę załatwiać, ale lepiej porównywać od teraz z noone)
- dużo poprawek w Code Editor 2 (zwłaszcza na błędy które powodowały, że kod był biały a nie pokolorowany)
UI Layery dostępne w becie 2024.13
Piątek, 07 Marca 2025, 11:18