Kompendium: Game Instance

Przed załadowaniem nowego poziomu, obecny level nie jest załadowany, a wartości i zmienne użyte przez dany poziom są usunięte z pamięci. Gdy zostanie on załadowany to wszystkie związane z nim zmienne takie jak “GameMode“, “PlayerController” oraz “Pawn” zostaną stworzone z domyślnymi wartościami. Znaczy to, że jeśli wartości zmiennych są potrzebne do przechowania dla następnego poziomu to muszą być one zapisane przed opuszczeniem obecnego poziom i po tym załadowane do nowego poziomu.

Następną opcją jest zachowanie wartości zmiennych pomiędzy poziomami przez użycie klasy “GameInstance“. Instancje tej klasy zostaje stworzona na początku gry i jest usunięta tylko wtedy gra zostanie zamknięta. By stworzyć Blueprint tego typu nawigujemy do naszego okna wyszukania i wpisujemy obiekt “GameInstance” w kategorii “AllClasses“.

25a_bpc2_gameinstance

Po stworzeniu Blueprinta typu “GameInstance” musimy skonfigurować projekt użyty w nowym “GameInstance”. Uzyskując dostęp do głównego edytora menu w lokacji Edit->Project Settings -> Maps & Modes.

Blueprint o nazwie “BP_GameInstance” został stworzony by użyć go w tym projekcie.

25b_bpc2_gameinstance

Jako przykład, stworzyłem w “BP_GameInstance” zmienną o nazwie “Time Spent in Game” by przechowywać spędzony czas gracza w grze. Ilustracja poniżej jest niestandardowym wydarzeniem, który pokazuje jak uzyskać dostęp do zmiennej z innego Blueprinta.

25c_bpc2_gameinstance

Użyj funkcji “Get Game Instance“, by uzyskać odniesienie do “GameInstance” używanego w tym projekcie. Owe odniesienie jest typem GameInstance i pozwoli Ci uzyskać odniesienie do “Time Spent in Game” musisz użyć odniesienia typu “BP_GameInstance“, który może zostać uzyskany poprzez akcję “Cast to BP_GameInstance“.


Źródło: http://romeroblueprints.blogspot.com/2016/06/bp-compendium-2-game-instance.html