Używanie Event Dispatcher w Blueprints

Schematy mają funkcję o nazwie „Event Dispatcher”, która pozwala na rodzaj komunikacji między planami klas a schematem poziomu. W tym artykule zmodyfikujemy przykład użyty w poprzednim artykule  i stworzymy schemat przedstawiający detonator, który będzie odpowiedzialny za zainicjowanie eksplozji.

Schemat „Detonator”, który stworzymy w tym artykule, zawiera zmienną „Czas” z czasem pozostałym do wybuchu. Kiedy aktor dotknie planu, zostanie on aktywowany i rozpocznie się odliczanie do wybuchu. Gdy zmienna „Czas” ma wartość zero, schemat „Detonator” wygeneruje zdarzenie o nazwie „Detonacja” za pomocą Event Dispatcher .

To kończy misję planu „Detonator”. Schemat „Detonatora” nie odpowiada za sposób, w jaki nastąpi eksplozja. W ten sposób mamy plan, który można wykorzystać w różnych sytuacjach.

Eksplozja jest tworzona na schemacie poziomu, gdy generowane jest zdarzenie „Detonacja” schematu „Detonator”. Stwórz nowy schemat o nazwie „Detonator” oparty na klasie Actor. Dodaj te dwie zmienne:


– Czas : typ całkowity, edytowalna i domyślna wartość 10.- Aktywny : typ Boolean, nie można go edytować i domyślna wartość to „false” (niezaznaczona).
Przejdź do trybu Komponenty. Schemat „Detonatora” jest wizualnie reprezentowany przez dwa komponenty: ramkę i renderowanie tekstu. Kliknij przycisk „Dodaj komponent” i najpierw wybierz „Pudełko”, a następnie „Renderowanie tekstu”:

Kliknij utworzony komponent Box i odznacz opcję „Ukryty w grze” w kategorii „Rendering”, aby pojawił się w trakcie gry.

Kliknij utworzony składnik TextRender i zmień jego nazwę na „ Wyświetl ”. W kategorii „Tekst” we właściwości „Wyrównanie w poziomie” wybierz „Środek”. We właściwości „Kolor renderowania tekstu” wybierz kolor czerwony, jak na poniższym obrazku:

Plan będzie wyglądał następująco:

Wyświetlana wartość 10 została uzyskana ze zmiennej “Czas” w Skrypcie Konstrukcji :

Przełącz się do trybu wykresu i utwórz nowy „EventDispatcher” o nazwie „Detonate”:

Detonator zostanie aktywowany, gdy ktoś go dotknie, więc wykorzystamy wydarzenie „Actor Begin Overlap”. Zmienna „Aktywny” jest używana, aby detonator był aktywowany tylko raz. Wykorzystuje także licznik czasu i zdarzenie niestandardowe, które jest odpowiedzialne za odliczanie detonatora. Scenariusz wyglądał następująco:

Funkcja „Set Timer Delegate” jest po prostu odmianą funkcji „Set Timer”, ale zamiast wpisywać nazwę zdarzenia, użyliśmy czerwonej pinezki niestandardowego zdarzenia, aby utworzyć skojarzenie z parametrem „Delegate” w Funkcja „Ustaw delegata timera”. Powyższy przykład oznacza po prostu, że zdarzenie „Zegar” będzie wywoływane co 1 sekundę.

Zdarzenie „Clock” odpowiada za zmniejszenie jednej zmiennej „time”, zaktualizowanie tekstu komponentu TextRender oraz sprawdzenie, czy zmienna „time” jest równa zero, aby wyczyścić Timer i wywołać Event Dispatcher „Detonate “:

Akcja „Wyczyść licznik czasu” wyłącza licznik czasu. Musisz podać nazwę zdarzenia niestandardowego, które jest skojarzone z licznikiem czasu. W powyższym przykładzie dezaktywujemy timer, aby zatrzymać licznik na zero.

Akcja „Call Detonate” generuje zdarzenie „Detonate”, które stworzyliśmy za pomocą Event Dispatchera. Akcje, które nastąpią w związku z tym wydarzeniem, zostaną utworzone na schemacie poziomu.

Po kompilacji „Detonator”  Blueprint , że jest gotowy do dodania do poziomu. Poniższy obrazek przedstawia „Detonator” w tabeli.

Teraz musimy umieścić akcje na planach poziomów, które spowodują eksplozję. Wybierz schemat „Detonator”, który został umieszczony na poziomie, a następnie otwórz schemat poziomu. Kliknij prawym przyciskiem myszy na wykresie i wybierz „Dodaj detonację”:

„Detonacja” to zdarzenie generowane przez „Detonator” za pomocą Event Dispatcher. Dostosowując przykład z poprzedniego artykułu, skrypt schematu poziomu  wygląda następująco  :

Uruchom grę i dotknij „Detonatora”, aby rozpocząć odliczanie. Kiedy osiągnie zero, generowany jest wybuch:

Korzystając z Event Dispatchera , oddzielamy schemat „Detonatora” generowanej eksplozji. W ten sposób możemy używać “Detonatora” na kilku poziomach generując różne eksplozje bez zmiany schematu “Detonatora”. Dalej:  Zaznacz zdarzenia i akcje ukryte w planach Poprzedni:  Korzystanie ze schematów poziomów Spis treści.


Źródło:https://romeroblueprints.blogspot.com/2014/11/using-event-dispatcher-in-blueprints.html