‫Cześć i witaj.
‫W tym wykładzie będziemy wdrażać nasze własne funkcje członków klasy, przesuwać platformę i obracać
‫platformę.
‫Zobaczymy, jak możemy je ustawić tak, aby mogły przyjmować argumenty.
‫Pomoże nam to trochę uporządkować nasz kod.
‫Zanurzmy się i zobaczmy, jak to działa.
‫Do tej pory korzystaliśmy więc z funkcji C++, które zostały już dla nas stworzone.
‫Używaliśmy take tych i możemy bawić się w pisanie ich funkcjonalności.
‫Korzystamy też z funkcji, które napisali dla nas inni ludzie.
‫Nazywaliśmy je np. zdobądź aktywną lokalizację i zdobądź imię.
‫Jak możemy teraz stworzyć nowe własne funkcje, które pomogą uporządkować nasz kod i utrzymać te funkcje w niewielkich rozmiarach,
‫a wszystko o wiele bardziej czytelne?
‫Cóż, mamy już gotowe podstawowe elementy konstrukcyjne, zbliżając się do końca sekcji.
‫Rozumiemy znacznie więcej o składni C++.
‫Więc to, co chcę zrobić, to zasadniczo stworzyć nową funkcję na ruchomej platformie, która pozwoli nam
‫mieć tylko wlot, powiedzmy wywołanie platformy przenoszenia.
‫Dlaczego chcę to zrobić?
‫Cóż, ponieważ możliwość wykonania takiego wywołania funkcji o nazwie MOVE Platform, naprawdę świadczy o tym, co
‫próbujemy zrobić w tej chwili.
‫Dużo się dzieje w dziedzinie technologii i nie jestem do końca jasne, dlaczego robimy to wszystko, jeśli po prostu
‫podejdę i rzucę okiem na niego, jeśli wejdę w technologię i zobaczyłem funkcję, która mówi Przenieś platformę , no
‫cóż, nagle mam kontekst tego, co te wszystkie rzeczy powinny robić i nie potrzebuję ani
‫jednego komentarza, aby powiedzieć mi, co się dzieje.
‫Będzie to szczególnie przydatne, gdy do miksu dodamy również możliwość obracania
‫platformy.
‫Jak więc definiujemy funkcje deklaracji?
‫Cóż, aspekt deklaracji jest przerobiony w nagłówku akt.
‫W tym miejscu zasadniczo mówimy, że heads up to C++, będziemy mieć funkcję, która będzie wyglądać mniej
‫więcej tak.
‫A potem w C++ faktycznie definiujemy funkcję.
‫Dajemy mu ciało, mówimy dokładnie C++.
‫Tak działa funkcja.
‫Zobaczmy, jak możemy to zrobić.
‫Mamy kilka przykładów funkcji i mamy duże możliwości, mamy technologię.
‫To dobry moment, abyśmy przyjrzeli się różnym sekcjom, które mamy w pliku nagłówkowym.
‫Mamy tu wzmiankę o publicznym i chronionym, a ponownie o publicznym.
‫Co to oznacza?
‫Te słowa kluczowe z dwukropkiem na końcu zasadniczo definiują sekcję dostępności.
‫Te funkcje, skąd można uzyskać do nich dostęp.
‫Widzieliśmy, jak bezpieczne jest normalne.
‫Jest to funkcja, którą wywołujemy na wektorze F, ale wywołujemy ją z innej klasy, a nie
‫z wektora F.
‫Oznacza to, że dostępność tej funkcji musi być publiczna.
‫Teraz zostawimy na bok chronione tylko na chwilę, ponieważ tam trochę się komplikuje.
‫Istnieje jednak inny rodzaj słowa kluczowego, którego możemy użyć, a który jest prywatny.
‫Dodam więc po ujęciu, dodam informację o słowach kluczowych private, że nie wcinam tych
‫sekcji i wstawimy dwukropek na końcu.
‫A to oznacza, że wszystko, co nastąpi później, aż do następnej sekcji, następne słowo
‫kluczowe, które tu wstawiam, będzie prywatne.
‫Oznacza to, że wzięliśmy wszystkie te zmienne i powiedzieliśmy: Hej, żadna inna klasa nie może ich dotknąć.
‫I to jest zazwyczaj najlepsza praktyka, której do tej pory nie stosowaliśmy, ponieważ nie chciałem, aby
‫sprawy były dla ciebie zbyt zagmatwane.
‫Ale zmienne w klasach powinny generalnie być ich własnym biznesem.
‫Jest to jeden z głównych dzierżawców programowania obiektowego, w którym pozostawiamy klasom zarządzanie ich własnymi zmiennymi
‫i uzyskujemy do nich dostęp tylko za pomocą funkcji, które klasa określa jako publiczne.
‫Więc zamierzamy tutaj dodać więcej prywatnych funkcji, ponieważ nie chcemy, aby
‫coś takiego jak Move Platform było wywoływane spoza klasy.
‫Chcemy, aby był zarządzany przez naszą własną funkcję techniczną.
‫Jak więc zdefiniować funkcję prywatną?
‫Cóż, umieściliśmy to w sekcji prywatnej.
‫Więc mamy tutaj nasze prywatne słowo kluczowe.
‫Umieszczę go jednak po naszych zmiennych i zaczniemy od typu zwracanego.
‫A jeśli nasza funkcja niczego nie zwraca, po prostu wpisujemy void, aby wskazać, że nie ma zwrotu z
‫tej funkcji.
‫Następnie nadajemy mu nazwę funkcji.
‫Więc przenieś platformę było tym, czego chcieliśmy, a następnie dajemy jej kilka nawiasów, aby wskazać, że jest to funkcja, którą otwieramy
‫i zamykamy nawiasy, a następnie średnik, aby zakończyć linię i powiedzieć, w porządku, to wszystko.
‫To jest funkcja, którą chcę zadeklarować tutaj w pliku nagłówkowym i wszystko, co robi.
‫Mówi To jest kształt funkcji.
‫To jest powrót.
‫To są parametry, które przyjmuje, nazwa i klasa, do której należy.
‫Teraz, aby faktycznie nadać mu implementację, musimy ją zdefiniować w pliku C++.
‫Więc chodźmy tam.
‫A na końcu pliku, tuż poza nawiasami klamrowymi, robimy to tutaj.
‫Zaczynamy od nowa z typem zwrotu.
‫Więc to będzie puste, ponieważ jesteśmy w pliku C++, a nie w nawiasach klamrowych
‫klasy.
‫Musimy użyć operatora rozpoznawania zakresu, aby powiedzieć, że próbujemy zdefiniować funkcję z poziomu ruchomej klasy
‫platformy.
‫Wpisujemy więc nazwę klasy, która jest ruchomą platformą, pamiętając, że przedrostek oznacza, że jest
‫to aktor.
‫Następnie używamy dwukropka, dwukropka, operatora rozwiązywania zakresu, a następnie używamy nazwy
‫funkcji, którą definiujemy, czyli platformy MOVE.
‫A potem używamy tego samego zestawu parametrów, co w pliku nagłówkowym.
‫W tym przypadku mieliśmy pusty zestaw parametrów, więc mamy tylko nawiasy.
‫A potem zamiast umieszczać średnik na końcu tej linii w nowej linii, wstawiamy otwierający nawias
‫klamrowy i odpowiadający mu zamykający nawias klamrowy.
‫A między tymi nawiasami klamrowymi, w których umieszczamy kod naszej funkcji, fantastycznie.
‫Więc to, co chcę teraz zrobić, to spróbować i powiedzieć, no cóż, cała ta funkcjonalność, którą mamy tutaj, i
‫tak naprawdę usunę komentarze, ponieważ już ich nie potrzebujemy.
‫Były to pseudokod, którego użyliśmy do zaimplementowania tego, ale teraz w pewnym sensie spełniło to swoje zadanie.
‫Rozumiemy, co robią wiersze kodu.
‫Wyjmę wszystko oprócz funkcji move platformy z ujęcia i skopiuję ją i wkleję do
‫naszej funkcji platformy MOVE.
‫Więc to powinno działać prawie tak samo, ponieważ kiedy wchodzimy w technologię, wywołujemy platformę move i
‫uruchamiamy ten sam fragment kodu.
‫Tyle że teraz połączyliśmy go w funkcję, co ułatwia nam czytanie i potencjalnie ponowne użycie w
‫przyszłości.
‫Ale jeśli to zrobisz, zauważysz, że jest problem.
‫Uzyskujemy dostęp do czasu Delta i jest to parametr, do którego nie mamy już dostępu, ponieważ był to parametr przekazany
‫do technologii.
‫Więc jeśli chcemy to uzyskać, musimy mieć parametr w naszej funkcji.
‫Więc kiedy definiujemy parametry, musimy to zrobić w dwóch miejscach.
‫Podobnie jak podczas definiowania funkcji, wracamy do pliku nagłówkowego i między
‫nawiasami naszej funkcji platformy MOVE.
‫W tym miejscu mówimy, jakich parametrów chcemy i jest to dokładnie tak, jak definiowanie zmiennej.
‫Musisz nadać mu typ i nadać mu nazwę.
‫Więc powiemy, że będzie to typ zmiennoprzecinkowy i możemy go po prostu nazwać czasem delta.
‫Nie musi to być ta sama nazwa.
‫Moglibyśmy to tak nazwać.
‫Moglibyśmy to nazwać czasem.
‫Ale łatwiej nadać mu taką samą nazwę, bo wtedy dla każdego, kto go czyta, jest oczywiste, co należy
‫tutaj przekazać.
‫Następnie w pliku C++ musimy dopasować listę parametrów.
‫Więc znowu możesz to zrobić, kopiując i wklejając lub wpisując.
‫Jeśli to wypiszesz, upewnij się, że nie popełnisz żadnych literówek, ponieważ kompilator będzie narzekał.
‫Tak więc będziemy mieli liczbę zmiennoprzecinkową o nazwie Delta Time przekazywaną jako parametr lub zdefiniowaną jako parametr
‫do przenoszenia platformy, ale w rzeczywistości nie przekazaliśmy jej jako argumentu do przenoszenia platformy w tiku.
‫I zobaczysz, że mam tu małą czerwoną falistą linię, bardzo, bardzo.
‫Mówi, że w wywołaniu funkcji jest za mało argumentów, ponieważ zdefiniowałem je w pliku
‫nagłówkowym, a teraz w C++, a także wymagam jednego parametru typu float.
‫Więc muszę podać ten parametr.
‫Więc upewnię się, że jest to parametr, który podaję.
‫Wartość, którą podaję, pochodzi ze zmiennej Delta time lub parametru Delta time z tiku.
‫Tak więc robimy wątki, wartość jest przekazywana do tiku, następnie jest przekazywana
‫do platformy move i kończy się w parametrze w funkcji platformy MOVE, gdzie można jej użyć do wykonania i przeniesienia
‫funkcjonalności platformy.
‫Więc chciałbym, żebyś stworzył swoją własną funkcję platformy rotacji, którą wywołamy z TIC.
‫Więc dodasz go do pliku nagłówkowego, tak jak zrobiliśmy to dla naszej funkcji platformy MOVE.
‫Dodamy go również do pliku C++ w ten sam sposób.
‫Więc weź wskazówki ze sposobu, w jaki zrobiliśmy to dla tych funkcji, a następnie wywołaj to z funkcji tik.
‫Upewnij się, że przechodzisz w czasie Delta i definiujesz wszelkie parametry, aby umożliwić
‫przejście w czasie Delta i zaimplementuj treść platformy Rotate, aby wylogowała komunikat.
‫W rzeczywistości nie będzie jeszcze obracać platformy, ale jako symbol zastępczy, aby upewnić się, że faktycznie
‫jest to nazywane komunikatem dziennika przy użyciu dziennika interfejsu użytkownika, o którym się dowiedzieliśmy.
‫Wstrzymaj wideo i spróbuj.
‫Dobra.
‫Witamy spowrotem.
‫Zaczniemy więc od pliku nagłówkowego i będziemy w większości robić to samo, co w przypadku naszej
‫platformy MOVE.
‫Umieścimy go w sekcji prywatnej, aby był dostępny tylko w naszej klasie.
‫Nadam mu typ void return, nazwiemy to platformą rotacyjną.
‫Otworzymy listę parametrów.
‫I w nim umieścimy jeden parametr, który będzie
‫miał typ float, nazwiemy go Delta time, zamkniemy parametry i zakończymy średnikiem.
‫Teraz większość tego, co robimy w pliku C++, jest dokładnie takie samo, jak w nagłówku pliku.
‫Więc właściwie skopiuję tę linię, przejdę do pliku C++ i pokażę, co jest inne.
‫Przejdę więc do nowej pustej linii na końcu pliku, wkleję ją, a co się zmieniło,
‫to tutaj, potrzebujemy operatora rozwiązywania zakresu i nazwy klasy.
‫Więc będziemy mieli ruchomą platformę, okrężnicę, platformę obrotową okrężnicy.
‫Następnie mamy listę parametrów i nie potrzebujemy średnika na końcu.
‫Usuń więc średnik, dodaj nową linię i atakuj nawiasy klamrowe zamiast nowej linii między tymi dwoma
‫nawiasami klamrowymi.
‫Więc to, co chcemy tutaj zrobić, to wydrukować komunikat dziennika.
‫Więc zamierzam wpisać log, naciśnij enter.
‫Będzie to po prostu prosty komunikat na wyświetlaczu.
‫A w tekście zamierzam umieścić nazwę naszej platformy.
‫Więc to będzie procent s, potem wpiszemy obracającą się kropkę, kropkę, kropkę, a potem
‫przekażę nazwę.
‫Teraz moglibyśmy umieścić to w zmiennej, ale ponieważ jest to dość krótka
‫linia, wpiszę po prostu star, pobierz nazwę, a następnie wstawię nawiasy, abyśmy w zasadzie tutaj wywołali nazwę get
‫name.
‫To jest wyrażenie, które przejmuje łańcuch.
‫A następnie konwertujemy ten wynik, aby umieścić go w naszym komunikacie dziennika.
‫Tak więc ze wszystkich naszych platform spodziewam się, że rotacja zostanie wydrukowana, ale stanie się to tylko wtedy,
‫gdy nazwać to technologią.
‫Przejdźmy więc do funkcji tick po tym, jak platforma MOVE może dodać nową linię i wywołać platformę rotacyjną.
‫I musimy zobaczyć.
‫Kiedy otwieram nawiasy, daje mi to wskazówkę, że muszę przekazać argument za czasem Delta.
‫Więc znowu, po prostu przekażemy tę samą zmienną czasu Delta od wewnątrz.
‫I tak jak powiedziałem, imiona tutaj nie muszą być takie same.
‫Więc ten czas delta musi być zgodny z czasem delta w technologii.
‫Możemy jednak zamiast tego wywołać zmienną w ramach rotacji daty platformy.
‫I gdziekolwiek użyjemy go w ramach platformy rotacji, musielibyśmy użyć ADT, nazwy parametru i
‫argumentu mogą być zasadniczo różne.
‫Przejdźmy więc do Unreal i wciśnij kompilację, ponieważ wprowadziliśmy kilka zmian w pliku nagłówkowym.
‫Kompilacja będzie nieco dłuższa niż w przypadku, gdy właśnie zmieniliśmy plik C++, a po zakończeniu
‫kompilacji przejdziemy do przodu, wciśniemy odtwarzanie i otworzymy dziennik wyjściowy.
‫I widać, że rzeczywiście wyświetlamy komunikaty dziennika dotyczące każdej z rotujących platform.
‫Wygląda więc na to, że nasza funkcja jest skutecznie wywoływana w technologii.
‫Świetna sprawa.
‫Teraz rozumiemy, jak tworzyć własne funkcje, które są członkami klasy.
‫Jest to bardzo przydatne narzędzie do ponownego wykorzystania kodu, ale także do organizowania go tak, jak w Blueprint.
‫Do zobaczenia na następnym wykładzie.