‫Cześć i witaj.
‫W tym wykładzie będziemy konfigurować połączenie między mechanizmem a wyzwalaczem za pomocą techniki zwanej wstrzykiwaniem
‫zależności, tak aby pod koniec wykładu, jeśli włożymy gargulca, drzwi przesuną się
‫w dół, a przynajmniej częściowo.
‫Zanurzmy się i zobaczmy, jak to działa.
‫I chwytam filiżankę.
‫Widzieliśmy, że istnieje zależność, którą nazywamy zależnością uchwytu fizyki.
‫Ten chwytak nie może wykonać swojej pracy, chyba że masz gdzieś w pobliżu komponent obsługi fizyki, tak się składa,
‫że komponent wyzwalacza jest taki sam.
‫Składnik wyzwalacza, aby prawidłowo działać, musi mieć dostęp do składnika Mover.
‫Jednak w tym przypadku jest to trochę trudniejsze, ponieważ z pewnością w przypadku naszych sekretnych drzwi
‫wyzwalacz i poruszający się obiekt znajdują się w tym samym aktorze.
‫Możesz więc uzyskać obiekt, znajdując składnik typu na aktorze.
‫Ale co by było, gdyby w moim skrypcie pojawiła się taka sytuacja, w której chcę, aby wyzwalacz
‫znajdował się w innej części pokoju niż aktor, który dobrze się porusza, aby umożliwić tego rodzaju elastyczność.
‫Chcemy, aby wyzwalacz nie musiał iść i znajdować własnych zależności.
‫I właściwie jest nazwa dla tego rodzaju koncepcji programu.
‫Nazywa się to wstrzykiwaniem zależności.
‫Zasadniczo dzieje się tak w przypadku, gdy mamy coś, co mówi, że potrzebuję innego przedmiotu, ale sam nie
‫mogę go znaleźć lub sam nie chcę go znaleźć.
‫I często rozsądnie jest nie zostawiać tego obiektowi, który wykonuje swoją własną pracę, zmuszając go do
‫innej pracy, próbując złapać przedmiot.
‫Tak więc sposobem, w jaki możemy to zrobić, jest stworzenie mechanizmu dla planów, który mówi składnikowi wyzwalającemu, gdzie
‫znaleźć element poruszający.
‫A sposób, w jaki zamierzamy to zrobić, to utworzenie wywoływalnej funkcji w naszym komponencie wyzwalającym.
‫Więc to będzie publiczne.
‫Umieścimy go w sekcji publicznej pod komponentem tiku i będzie to funkcja
‫U, tak aby można ją było następnie w nawiasach wywoływać.
‫A ta funkcja nie musi mieć wiele.
‫To będzie nieważne, ponieważ nie potrzebuje go, aby coś zwrócić, ale będzie ustawione jako
‫przenoszące, więc ustawi link do przenoszącego i aby ustawić link do przenoszącego, musi weź
‫wskaźnik do komponentu Mover.
‫To będzie twoja gwiazda poruszająca i możemy po prostu nazwać to poruszającym się w ten sposób i wstawić średnik na końcu
‫tej linii.
‫I musimy to gdzieś przechowywać.
‫Więc stworzymy nową zmienną prywatną.
‫Nie będzie to nowa właściwość, a będzie to po prostu wskaźnik ruchu U,
‫który również będziemy nazywać przenoszeniem.
‫Tak jak i to, co zamierzamy zrobić, to zaimplementować ten set mover w CPP, tak aby ustawiał ten ruch jako wskaźnik,
‫który domyślnie będzie miał wartość null.
‫I musimy zrobić jeszcze jedną rzecz.
‫Musimy dołączyć plik nagłówkowy dla naszego narzędzia przenoszenia.
‫Teraz w tym przypadku, ponieważ plik nagłówkowy znajduje się w tym samym
‫folderze, co komponent wyzwalacza, wszystko, co musimy zrobić, to dodać hash do mechanizmu przenoszenia cudzysłowów H, a to upewni się, że komponent wyzwalacza jest świadomy
‫typu przenoszenia.
‫Przejdźmy więc do naszego komponentu wyzwalacza.
‫CP I zamierzam umieścić to poniżej naszego komponentu tick, który zamierzamy zaimplementować set mover.
‫Umieścimy przed klasą aktywowany składnik i wprowadzimy do niej wcięcie.
‫Usuń średnik i dodaj nawiasy klamrowe.
‫I zasadniczo wszystko, co będziemy musieli tutaj zrobić, to zmienić nazwę tylko w pliku C++.
‫W rzeczywistości nie ma znaczenia, czy nazwa parametrów pasuje do nagłówka i C++.
‫Więc możemy to tutaj zmienić i powiedzieć, że nowy poruszyciel jest tym, co nadchodzi, aby ustawić poruszyciela.
‫I tak możemy ustawić naszą zmienną lokalną, naszą zmienną klasy mover równą nowemu ruchowi.
‫Więc teraz jest naprawdę bardzo ważne, aby nie pominąć tego kroku zmiany nazwy, ponieważ jeśli parametr
‫wejściowy ma taką samą nazwę jak jedna ze zmiennych w klasie, to domyślnie nierealne ustawi to jako błąd.
‫Nazywa się to cieniowaniem i Unreal nie chce, żebyś to robił, więc musisz się upewnić, że masz
‫teraz inną nazwę parametru niż zmienna, ponieważ te nowe funkcje nie zawsze pojawiają się ze zmianami
‫kodowania na żywo.
‫Zamierzam zamknąć edytor ponownie skompilować z kodu programu Visual Studio, a następnie ponownie uruchomić z nowego
‫projektu.
‫Przejdźmy teraz do szuflady z zawartością, otwórzmy nasz sekretny plan ściany, a
‫następnie z naszego węzła Rozpocznij zabawę na wykresie zdarzeń, wyjdźmy stąd i wyszukajmy set mover.
‫Teraz zauważ, że są tutaj dwie opcje.
‫Jednym z nich byłoby ustawienie komponentu, który jest również nazywany Mover, a drugim jest funkcja w komponencie
‫wyzwalającym.
‫Więc chcemy wybrać tę, która jest funkcją w komponencie wyzwalacza.
‫A potem to, co chcemy zrobić, to przeciągnąć nasz komponent Mover jako inne argumenty do tej funkcji i to powinno
‫załatwić sprawę.
‫To ustawia poruszenie na początku gry.
‫Więc teraz zasadniczo chcemy, aby nasz składnik wyzwalacza ustawiał
‫i ustawiał tutaj wartość logiczną.
‫To będzie moje wyzwanie dla Ciebie, aby stworzyć kilka funkcji publicznych w Mover i Mover.
‫CP Powinna być ustawiona, powinna się przesunąć i powinna aktualizować tę zmienną właściwości.
‫W rzeczywistości możesz sprawić, że nie będzie to już nowa właściwość, ponieważ będziemy teraz ustawiać ją za pomocą
‫kodu, a potem możesz umieścić ją w sekcji publicznej.
‫Musi być publiczny, ponieważ spróbujemy uzyskać do niego dostęp z naszego komponentu wyzwalacza.
‫I możesz to wywołać na wskaźniku ruchu, który mamy w komponencie wyzwalacza, z ustawienia komponentu tiku, odpowiedniej
‫wartości logicznej, niezależnie od tego, czy chcemy go odblokować, czy ponownie zablokować, zatrzymać wideo
‫i spróbować.
‫Ok, witaj z powrotem.
‫Więc zamierzam usunąć właściwość z powinno się przenieść Przejdę do sekcji
‫publicznej tuż pod komponentem TTIC i mam zamiar utworzyć zestaw pustych, powinien się przenieść, przyjmując wartość logiczną, którą zamierzamy
‫wywołać powinien ruszaj się tak.
‫A potem weźmiemy to i przejdziemy do przeniesienia CP i zaimplementujemy to, zastępując średnik,
‫dodając w przesunięciu dwukropek, klasę dwukropka i w zasadzie znowu możemy nazwać to nowe powinno przenieść
‫i możemy powiedzieć, że powinno się ruszyć równe nowe powinno się ruszyć.
‫Teraz możesz się zastanawiać, dlaczego po prostu nie udostępnimy samych zmiennych, abyśmy
‫mogli je ustawić bezpośrednio?
‫To generalnie nie jest dobra praktyka w C++, ponieważ jeśli pozwolisz komuś zmienić twoje zmienne, nigdy nie wiadomo, co
‫się z nim stanie.
‫Zważywszy, że jeśli masz metodę, która zrobi to za Ciebie, pozwala to później zmienić strukturę zmiennych
‫wewnętrznych bez konieczności zmiany funkcji publicznych, co oznacza, że musisz wykonać mniej
‫aktualizacji różnych klas.
‫Więc generalnie, z reguły zawsze używamy seterów i getterów, jeśli potrzebujemy uzyskać dostęp do zmiennych w
‫innych klasach.
‫Więc teraz, gdy stworzyliśmy tę nową funkcję, przejdźmy do komponentu trig CP, w którym obecnie
‫mamy nasze komunikaty dziennika.
‫To, co chcemy zrobić, to uzyskać dostęp do naszego wskaźnika ruchu, więc zrobimy, że zestaw strzałek ruchu powinien się poruszać.
‫A w przypadku, gdy mamy akceptowalnego aktora, to powinno być prawdą.
‫Powinniśmy przesunąć średnik na końcu linii.
‫A w innym przypadku, cóż, prawdopodobnie nie powinniśmy.
‫Więc zrobimy przesuń zestaw strzałek powinien się przesunąć, aw nawiasach umieść false usuń dodatkowe R, które miałem na końcu mojej metody
‫i przekompilujmy teraz w tym przypadku, ponieważ dodałem tę funkcję tylko w C++ i to
‫nie jest możliwe do wywołania według planu.
‫Myślę, że nie muszę ponownie uruchamiać edytora, aby ta funkcja działała, zamknąć
‫dziennik wyjściowy, iść do naszego gargulca, zacząć grać i go podnieść.
‫Wyjdźmy z tej klatki i wetknijmy ją we wnękę, a oni idą. Schodzi w dół, ale zatrzymuje się, gdy tylko gargulec
‫wypadnie, co nie jest idealne, ponieważ gargulec tak naprawdę nie jest trzymany w miejscu, a ściana
‫nie jest całkowicie w dół.
‫A ponieważ symuluje fizykę, wyskoczy z tej wnęki, prawda?
‫Musimy więc upewnić się, że gdy wrzucimy go do naszego obszaru wyzwalania, zostanie tam naprawiony i po
‫prostu pozostanie.
‫To będzie temat następnego wykładu.
‫Zobaczę cię tam.