Tworzenie Blueprintu z klasy TutoProjectCollectable

W tym artykule zamierzam stworzyć Blueprint, który będzie używał klasy TutoProjectCollectable C ++ jako klasy parent. Jest to typowy przepływ pracy w Unreal Engine, w którym tworzysz klasę bazową w C++ z kilkoma funkcjami oraz klasę child w Blueprint, aby móc modyfikować niektóre właściwości bezpośrednio w edytorze.

Przed utworzeniem Blueprints dodaj i wybierz instancję TutoProjectCollectable na poziomie i sprwadź na karcie Details, że możesz zmodyfikować Static Mesh i materiał używany przez tę instancję, jak pokazano na poniższym zrzucie ekranu:

Jeśli chcesz stworzyć inny rodzaj przedmiotu, który może zebrać gracz łatwiej stworzyć jest Blueprint w oparciu o TutoProjectCollectable. W ten sposób Blueprint odziedziczy wszystkie funkcje, które zostały już stworzone, a my będziemy mogli zdefiniować inny domyślny Static Mesh dla tego nowego typu przedmiotu. W tym nowym Blueprints możemy również zmienić zmienne definiujące obszar gry.

Stwórzmy Blueprint o nazwie BPTutoProjectCollectable. W Content Browser przejdź do folderu TutoProject, który znajduje się w folderze C ++ Classes. Kliknij prawym przyciskiem myszy w klasę TutoProjectCollectable i wybierz opcję Utwórz klasę Blueprint w oparciu o TutoProjectCollectable, jak pokazano na poniższym obrazku.

Na następnym ekranie wpisz BPTutoProjectCollectable w polu Name. Natomiast w polu Path wybierz folder Blueprints, który znajduje się w folderze ThirdPersonCPP i kliknij przycisk Utwórz klasę Blueprint.

Kliknij dwukrotnie nowy Blueprint, aby otworzyć edytor, a następnie przejdź do zakładki Components i wybierz StaticMesh, jak na obrazku.

W zakładce Details możesz zmienić Static Mesh oraz Materiał, który będzie używany przez instancje tego Blueprint. Dla Static Mesh wybierz Shape_NarrowCapsule, a dla Material wybierz M_Tech_Hex_Tile_Pulse. Obie pochodzą ze Starter Content.

Teraz kliknij przycisk Class Defaults w edytorze Blueprint. Poszukaj kategorii właściwości Tutorial i Game Area, a w tych kategoriach znajdziesz zmienne, które utworzyliśmy w klasie C++ TutoProjectCollectable za pomocą UPROPERTY().

Te i inne zmienne zostały odziedziczone z klasy nadrzędnej. Możesz modyfikować wartości zmiennych w kategorii Game Area, aby zdefiniować obszar, w którym będą tworzone instancje tego Blueprint. Zmienne obszaru gry pojawiają się tylko w edytorze Blueprint. Nie pojawią się w oknach właściwości instancji znajdujących się na tym poziomie. Dzieje się tak, ponieważ definiujemy te zmienne przy użyciu specyfikatora EditDefaultsOnly w UPROPERTY().

Skompiluj Blueprint i dodaj kilka instancji tego Blueprints na poziomie. Przetestuj grę i zwróć uwagę, że gdy gracz zbierze egzemplarze tego BP, zdobędzie punkty w ten sam sposób, gdy zostanie zebrana instancja klasy C++ TutoProjectCollectable. Dzieje się tak, ponieważ cała funkcjonalność klasy C++ TutoProjectCollectable została odziedziczona przez ten Blueprint. Jest to kluczowa zasada programowania obiektowego.


Źródło:https://romeroblueprints.blogspot.com/2020/09/creating-blueprint-based-on.html