‫Cześć i witaj.
‫Na tym wykładzie przyjrzymy się, w jaki sposób możemy tworzyć nowe węzły w planach z
‫C++, tak aby zasadniczo można było wywoływać funkcjonalność C++ z poziomu planów.
‫Zanurzmy się i zobaczmy, jak to się teraz robi tak dobrze, że mogę użyć schematów do wywołania węzłów schematu,
‫ale tak naprawdę chcę aktywować nasz chwytak z tego fragmentu schematu tutaj, a nie drukować jakieś ciągi.
‫Więc jak mam to zrobić?
‫Cóż, na szczęście możemy dość łatwo udostępnić funkcję z klasy C++ do planu.
‫A sposób, w jaki to robimy, jest następujący.
‫Więc zamierzamy stworzyć nową funkcję publiczną.
‫Przejdę więc do mojej sekcji publicznej tuż pod komponentem zaznaczenia.
‫A tutaj mam zamiar stworzyć nową funkcję z void zwracanym typem o nazwie release.
‫Więc zamierzamy to zrobić później, ale na razie wywołamy funkcję zwalniającą.
‫Jak mogę to udostępnić w Blueprint?
‫Cóż, muszę zrobić z tego nową funkcję.
‫Masz więc nowe właściwości zmiennych.
‫Twoja funkcja jest swego rodzaju odpowiednikiem tego, by funkcja była w zasadzie widoczna w krainie planu.
‫Ale nie zatrzymujemy tego.
‫Podobnie jak w przypadku nowej nieruchomości.
‫Musimy wprowadzić tutaj edycję w dowolnym miejscu za pomocą funkcji U, musimy uczynić ją wywoływalną schematem, a to,
‫jak sama nazwa wskazuje, oznacza, że ta funkcja staje się teraz węzłem, do którego schemat ma dostęp.
‫Przejdźmy więc do pobrania CP i stwórzmy do tego implementację.
‫Będzie to typ zwrotu void.
‫Będzie to jak chwycisz dwukropek, zwolnienie dwukropka, bez parametrów i wstawimy treść funkcji, w
‫której wstawię nowe logowanie i dam wiadomość, zwolnij grabber w ten sposób .
‫A potem możemy skompilować i wrócić do naszego odtwarzacza BP, usunę węzeł łańcucha wydruku
‫i przeciągnę z release tutaj i będę szukał release jako funkcji tutaj.
‫A teraz chodźmy się trochę rozejrzeć.
‫W tej chwili nic się nie wyświetla, ponieważ muszę to zrobić na chwytaku.
‫Weźmy więc komponent grabbera, przeciągnijmy go do wykresu zdarzeń, aby utworzyć zmienną grabbera,
‫przeciągnijmy go i poszukajmy release.
‫Teraz zauważ, że w tym przypadku również nic się nie dzieje.
‫A to dlatego, że wykorzystaliśmy kodowanie na żywo.
‫A czasami rzeczy, które zostały skompilowane w kodowaniu na żywo, nie pojawiają się w edytorze.
‫To, co musimy zrobić, to zamknąć edytor, zamknąć okno kodowania światła, a następnie
‫w kodzie Visual Studio nacisnąć Control shift B i skompilować za pomocą edytora Crypt Reader, gdy kompilacja
‫rozwojowa 64, poczekać, aż się powiedzie, a następnie ponownie uruchomić edytor z pliku projektu.
‫Teraz, jeśli ponownie otworzymy nasz odtwarzacz BP i teraz wyciągniemy chwytak, szukamy zwolnienia.
‫Widać, że teraz jest notatka o nazwie release.
‫I rzeczywiście wszystko, co zrobi, to ochłodzenie naszego C++.
‫Możesz więc zobaczyć, jak naprawdę możesz używać Blueprint i C++ w ścisłej współpracy w ten sposób,
‫eksponując rzeczy C++ w świecie Blueprint.
‫Teraz zamierzam podłączyć pióro do wykonywania wydania do węzła wydania.
‫Wejdziemy do naszego lochu i zaczniemy grać.
‫A teraz, gdybym miał chwycić, a następnie zwolnić, nic nie widać, ponieważ jest to w dzienniku wyjściowym.
‫Otwórzmy więc dziennik wyjściowy i zadokujmy go w układzie, a następnie ponownie naciśnij przycisk Odtwórz.
‫A teraz, kiedy łapiemy, a potem puszczamy, widać tam krótką wiadomość.
‫Przewija się bardzo szybko, ponieważ każdy tik, który robimy, uderza w statuę statusu gargulca.
‫Ale jeśli zatrzymasz się i spojrzysz wstecz przez dziennik, zobaczysz, że powiedział zwolniony dziadek.
‫Więc nasz kod C++ jest wykonywany.
‫Ok, więc teraz chciałbym, abyś przeniósł nasz kod wobulacji do funkcji grab.
‫Więc utworzysz funkcję grab i wywołasz ją z Blueprint.
‫Możesz to zrobić w taki sam sposób, jak właśnie zrobiłem funkcję zwolnienia.
‫Ale kiedy tworzysz treść funkcji grab zamiast po prostu drukować cokolwiek,
‫przenieśmy ten kod zamiatania i instrukcję if i wszystkie wszystkie zmienne prep z TIC, aby tego nie robiły.
‫Za każdym razem bierzemy dwa, właśnie wtedy, gdy wywołujemy tę funkcję grab, kiedy wciskamy przycisk myszy
‫lub naciskamy spust na naszym kontrolerze, a następnie ponownie kompilujemy i sprawdzamy logi, aby upewnić się, że rzeczywiście dzieje
‫się to tylko po naciśnięciu przycisku , wstrzymaj wideo i spróbuj.
‫Dobra.
‫Witamy spowrotem.
‫Przejdźmy więc do naszego C++ i do naszego pliku nagłówkowego.
‫Zamierzam zamknąć okno kompilacji tutaj i powyżej wydania, zamierzam stworzyć nowy schemat
‫funkcji, który można wywołać, który będzie nosił nazwę grab.
‫Zaimplementujemy to w C++.
‫Więc znowu, to będzie pustka.
‫Chwytasz dwukropek, chwytasz za okrężnicę nawiasy, a potem szelki.
‫I zamierzam przenieść cały ten kod z komponentu TIC, ponieważ ustawiamy nasze wektory startowe i
‫inne dobre rzeczy.
‫Zejdźmy na sam dół, wytnijmy i wklejmy do chwytaka zamiast tam, gdzie powinno być.
‫W porządku.
‫Zobaczmy teraz, czy kodowanie na żywo przyniesie nową funkcję w odtwarzaczu BP.
‫Przejdźmy do odtwarzacza BP, usuń nasz ciąg do wydruku i przeciągnijmy go.
‫Chwyć węzeł, który mamy i zobacz, czy możemy znaleźć funkcję grab.
‫Ok, więc tym razem funkcja grab była dla nas dostępna.
‫To wspaniale.
‫Teraz podłączmy wciśnięty pin egzekucyjny, przejdźmy do naszego lochu, wciśnijmy play i upewnijmy się, że przewiniemy na
‫sam dół dziennika wyjściowego.
‫Idę prawym przyciskiem myszy do mojego okna i rozejrzyj się, a następnie nacisnę lewy przycisk.
‫Mówi, że żaden aktor nie uderza, a następnie natychmiast chwyta wydanie.
‫Więc teraz aktor uderza, a potem puszczam klawisz.
‫Brak chwytacza wydania.
‫Teraz zapomniałem o swoim gargulcu.
‫Spójrz na to.
‫Naciskam i wyświetla się komunikat: Aktor uderzył w posąg Gogola, a potem mogę puścić chwytak.
‫Więc teraz mamy odpowiednią architekturę.
‫Aby złapać tego gargulca.
‫Następnie musimy zająć się częścią fizyki tego układu.
‫Do zobaczenia w następnym wykładzie.