﻿1
00:00:04,370 --> 00:00:05,390
‫Cześć i witaj.

2
00:00:05,390 --> 00:00:12,170
‫W tym wykładzie będziemy konfigurować połączenie między mechanizmem a wyzwalaczem za pomocą techniki zwanej wstrzykiwaniem

3
00:00:12,170 --> 00:00:18,230
‫zależności, tak aby pod koniec wykładu, jeśli włożymy gargulca, drzwi przesuną się

4
00:00:18,230 --> 00:00:20,810
‫w dół, a przynajmniej częściowo.

5
00:00:20,810 --> 00:00:24,260
‫Zanurzmy się i zobaczmy, jak to działa.

6
00:00:25,080 --> 00:00:26,460
‫I chwytam filiżankę.

7
00:00:26,490 --> 00:00:33,030
‫Widzieliśmy, że istnieje zależność, którą nazywamy zależnością uchwytu fizyki.

8
00:00:33,030 --> 00:00:40,350
‫Ten chwytak nie może wykonać swojej pracy, chyba że masz gdzieś w pobliżu komponent obsługi fizyki, tak się składa,

9
00:00:40,350 --> 00:00:42,960
‫że komponent wyzwalacza jest taki sam.

10
00:00:42,960 --> 00:00:50,100
‫Składnik wyzwalacza, aby prawidłowo działać, musi mieć dostęp do składnika Mover.

11
00:00:50,460 --> 00:00:57,360
‫Jednak w tym przypadku jest to trochę trudniejsze, ponieważ z pewnością w przypadku naszych sekretnych drzwi

12
00:00:57,360 --> 00:01:02,400
‫wyzwalacz i poruszający się obiekt znajdują się w tym samym aktorze.

13
00:01:02,730 --> 00:01:08,220
‫Możesz więc uzyskać obiekt, znajdując składnik typu na aktorze.

14
00:01:08,220 --> 00:01:14,490
‫Ale co by było, gdyby w moim skrypcie pojawiła się taka sytuacja, w której chcę, aby wyzwalacz

15
00:01:14,490 --> 00:01:20,760
‫znajdował się w innej części pokoju niż aktor, który dobrze się porusza, aby umożliwić tego rodzaju elastyczność.

16
00:01:20,760 --> 00:01:26,940
‫Chcemy, aby wyzwalacz nie musiał iść i znajdować własnych zależności.

17
00:01:26,940 --> 00:01:30,330
‫I właściwie jest nazwa dla tego rodzaju koncepcji programu.

18
00:01:30,330 --> 00:01:32,640
‫Nazywa się to wstrzykiwaniem zależności.

19
00:01:32,640 --> 00:01:37,680
‫Zasadniczo dzieje się tak w przypadku, gdy mamy coś, co mówi, że potrzebuję innego przedmiotu, ale sam nie

20
00:01:37,680 --> 00:01:40,230
‫mogę go znaleźć lub sam nie chcę go znaleźć.

21
00:01:40,290 --> 00:01:47,940
‫I często rozsądnie jest nie zostawiać tego obiektowi, który wykonuje swoją własną pracę, zmuszając go do

22
00:01:47,940 --> 00:01:50,850
‫innej pracy, próbując złapać przedmiot.

23
00:01:51,300 --> 00:02:00,810
‫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

24
00:02:00,810 --> 00:02:02,730
‫znaleźć element poruszający.

25
00:02:02,910 --> 00:02:09,330
‫A sposób, w jaki zamierzamy to zrobić, to utworzenie wywoływalnej funkcji w naszym komponencie wyzwalającym.

26
00:02:09,810 --> 00:02:11,220
‫Więc to będzie publiczne.

27
00:02:11,220 --> 00:02:16,980
‫Umieścimy go w sekcji publicznej pod komponentem tiku i będzie to funkcja

28
00:02:16,980 --> 00:02:22,710
‫U, tak aby można ją było następnie w nawiasach wywoływać.

29
00:02:23,280 --> 00:02:26,130
‫A ta funkcja nie musi mieć wiele.

30
00:02:26,130 --> 00:02:33,330
‫To będzie nieważne, ponieważ nie potrzebuje go, aby coś zwrócić, ale będzie ustawione jako

31
00:02:33,330 --> 00:02:40,860
‫przenoszące, więc ustawi link do przenoszącego i aby ustawić link do przenoszącego, musi weź

32
00:02:40,860 --> 00:02:43,620
‫wskaźnik do komponentu Mover.

33
00:02:43,620 --> 00:02:51,540
‫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

34
00:02:51,540 --> 00:02:52,440
‫tej linii.

35
00:02:52,830 --> 00:02:55,350
‫I musimy to gdzieś przechowywać.

36
00:02:55,350 --> 00:02:57,300
‫Więc stworzymy nową zmienną prywatną.

37
00:02:57,300 --> 00:03:02,280
‫Nie będzie to nowa właściwość, a będzie to po prostu wskaźnik ruchu U,

38
00:03:02,280 --> 00:03:04,530
‫który również będziemy nazywać przenoszeniem.

39
00:03:04,560 --> 00:03:12,900
‫Tak jak i to, co zamierzamy zrobić, to zaimplementować ten set mover w CPP, tak aby ustawiał ten ruch jako wskaźnik,

40
00:03:12,900 --> 00:03:15,660
‫który domyślnie będzie miał wartość null.

41
00:03:16,050 --> 00:03:17,790
‫I musimy zrobić jeszcze jedną rzecz.

42
00:03:17,790 --> 00:03:20,640
‫Musimy dołączyć plik nagłówkowy dla naszego narzędzia przenoszenia.

43
00:03:21,150 --> 00:03:26,370
‫Teraz w tym przypadku, ponieważ plik nagłówkowy znajduje się w tym samym

44
00:03:26,370 --> 00:03:36,870
‫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

45
00:03:36,870 --> 00:03:38,100
‫typu przenoszenia.

46
00:03:38,280 --> 00:03:40,230
‫Przejdźmy więc do naszego komponentu wyzwalacza.

47
00:03:40,230 --> 00:03:46,530
‫CP I zamierzam umieścić to poniżej naszego komponentu tick, który zamierzamy zaimplementować set mover.

48
00:03:46,530 --> 00:03:52,500
‫Umieścimy przed klasą aktywowany składnik i wprowadzimy do niej wcięcie.

49
00:03:53,400 --> 00:03:55,590
‫Usuń średnik i dodaj nawiasy klamrowe.

50
00:03:55,590 --> 00:04:00,150
‫I zasadniczo wszystko, co będziemy musieli tutaj zrobić, to zmienić nazwę tylko w pliku C++.

51
00:04:00,150 --> 00:04:06,060
‫W rzeczywistości nie ma znaczenia, czy nazwa parametrów pasuje do nagłówka i C++.

52
00:04:06,060 --> 00:04:12,540
‫Więc możemy to tutaj zmienić i powiedzieć, że nowy poruszyciel jest tym, co nadchodzi, aby ustawić poruszyciela.

53
00:04:12,630 --> 00:04:20,010
‫I tak możemy ustawić naszą zmienną lokalną, naszą zmienną klasy mover równą nowemu ruchowi.

54
00:04:20,010 --> 00:04:27,030
‫Więc teraz jest naprawdę bardzo ważne, aby nie pominąć tego kroku zmiany nazwy, ponieważ jeśli parametr

55
00:04:27,030 --> 00:04:34,170
‫wejściowy ma taką samą nazwę jak jedna ze zmiennych w klasie, to domyślnie nierealne ustawi to jako błąd.

56
00:04:34,170 --> 00:04:39,720
‫Nazywa się to cieniowaniem i Unreal nie chce, żebyś to robił, więc musisz się upewnić, że masz

57
00:04:39,720 --> 00:04:44,970
‫teraz inną nazwę parametru niż zmienna, ponieważ te nowe funkcje nie zawsze pojawiają się ze zmianami

58
00:04:44,970 --> 00:04:46,260
‫kodowania na żywo.

59
00:04:46,260 --> 00:04:52,290
‫Zamierzam zamknąć edytor ponownie skompilować z kodu programu Visual Studio, a następnie ponownie uruchomić z nowego

60
00:04:52,290 --> 00:04:52,920
‫projektu.

61
00:04:52,950 --> 00:04:58,950
‫Przejdźmy teraz do szuflady z zawartością, otwórzmy nasz sekretny plan ściany, a

62
00:04:58,950 --> 00:05:06,080
‫następnie z naszego węzła Rozpocznij zabawę na wykresie zdarzeń, wyjdźmy stąd i wyszukajmy set mover.

63
00:05:06,090 --> 00:05:08,190
‫Teraz zauważ, że są tutaj dwie opcje.

64
00:05:08,190 --> 00:05:15,210
‫Jednym z nich byłoby ustawienie komponentu, który jest również nazywany Mover, a drugim jest funkcja w komponencie

65
00:05:15,210 --> 00:05:15,750
‫wyzwalającym.

66
00:05:15,750 --> 00:05:18,840
‫Więc chcemy wybrać tę, która jest funkcją w komponencie wyzwalacza.

67
00:05:19,050 --> 00:05:27,120
‫A potem to, co chcemy zrobić, to przeciągnąć nasz komponent Mover jako inne argumenty do tej funkcji i to powinno

68
00:05:27,120 --> 00:05:28,110
‫załatwić sprawę.

69
00:05:28,110 --> 00:05:31,350
‫To ustawia poruszenie na początku gry.

70
00:05:31,350 --> 00:05:37,800
‫Więc teraz zasadniczo chcemy, aby nasz składnik wyzwalacza ustawiał

71
00:05:37,800 --> 00:05:41,400
‫i ustawiał tutaj wartość logiczną.

72
00:05:41,400 --> 00:05:46,110
‫To będzie moje wyzwanie dla Ciebie, aby stworzyć kilka funkcji publicznych w Mover i Mover.

73
00:05:46,110 --> 00:05:51,780
‫CP Powinna być ustawiona, powinna się przesunąć i powinna aktualizować tę zmienną właściwości.

74
00:05:51,780 --> 00:05:56,970
‫W rzeczywistości możesz sprawić, że nie będzie to już nowa właściwość, ponieważ będziemy teraz ustawiać ją za pomocą

75
00:05:56,970 --> 00:05:59,760
‫kodu, a potem możesz umieścić ją w sekcji publicznej.

76
00:05:59,760 --> 00:06:04,740
‫Musi być publiczny, ponieważ spróbujemy uzyskać do niego dostęp z naszego komponentu wyzwalacza.

77
00:06:04,740 --> 00:06:11,850
‫I możesz to wywołać na wskaźniku ruchu, który mamy w komponencie wyzwalacza, z ustawienia komponentu tiku, odpowiedniej

78
00:06:11,850 --> 00:06:17,970
‫wartości logicznej, niezależnie od tego, czy chcemy go odblokować, czy ponownie zablokować, zatrzymać wideo

79
00:06:17,970 --> 00:06:18,960
‫i spróbować.

80
00:06:22,250 --> 00:06:23,690
‫Ok, witaj z powrotem.

81
00:06:23,690 --> 00:06:29,410
‫Więc zamierzam usunąć właściwość z powinno się przenieść Przejdę do sekcji

82
00:06:29,420 --> 00:06:39,800
‫publicznej tuż pod komponentem TTIC i mam zamiar utworzyć zestaw pustych, powinien się przenieść, przyjmując wartość logiczną, którą zamierzamy

83
00:06:39,800 --> 00:06:43,010
‫wywołać powinien ruszaj się tak.

84
00:06:43,280 --> 00:06:51,560
‫A potem weźmiemy to i przejdziemy do przeniesienia CP i zaimplementujemy to, zastępując średnik,

85
00:06:51,560 --> 00:07:00,920
‫dodając w przesunięciu dwukropek, klasę dwukropka i w zasadzie znowu możemy nazwać to nowe powinno przenieść

86
00:07:00,920 --> 00:07:08,030
‫i możemy powiedzieć, że powinno się ruszyć równe nowe powinno się ruszyć.

87
00:07:08,030 --> 00:07:12,860
‫Teraz możesz się zastanawiać, dlaczego po prostu nie udostępnimy samych zmiennych, abyśmy

88
00:07:12,860 --> 00:07:14,660
‫mogli je ustawić bezpośrednio?

89
00:07:14,780 --> 00:07:22,520
‫To generalnie nie jest dobra praktyka w C++, ponieważ jeśli pozwolisz komuś zmienić twoje zmienne, nigdy nie wiadomo, co

90
00:07:22,520 --> 00:07:24,620
‫się z nim stanie.

91
00:07:24,620 --> 00:07:32,090
‫Zważywszy, że jeśli masz metodę, która zrobi to za Ciebie, pozwala to później zmienić strukturę zmiennych

92
00:07:32,090 --> 00:07:38,240
‫wewnętrznych bez konieczności zmiany funkcji publicznych, co oznacza, że musisz wykonać mniej

93
00:07:38,240 --> 00:07:39,920
‫aktualizacji różnych klas.

94
00:07:39,920 --> 00:07:46,070
‫Więc generalnie, z reguły zawsze używamy seterów i getterów, jeśli potrzebujemy uzyskać dostęp do zmiennych w

95
00:07:46,070 --> 00:07:46,850
‫innych klasach.

96
00:07:46,850 --> 00:07:52,100
‫Więc teraz, gdy stworzyliśmy tę nową funkcję, przejdźmy do komponentu trig CP, w którym obecnie

97
00:07:52,100 --> 00:07:53,570
‫mamy nasze komunikaty dziennika.

98
00:07:53,570 --> 00:08:01,670
‫To, co chcemy zrobić, to uzyskać dostęp do naszego wskaźnika ruchu, więc zrobimy, że zestaw strzałek ruchu powinien się poruszać.

99
00:08:01,670 --> 00:08:06,140
‫A w przypadku, gdy mamy akceptowalnego aktora, to powinno być prawdą.

100
00:08:06,140 --> 00:08:08,600
‫Powinniśmy przesunąć średnik na końcu linii.

101
00:08:08,690 --> 00:08:12,200
‫A w innym przypadku, cóż, prawdopodobnie nie powinniśmy.

102
00:08:12,200 --> 00:08:20,510
‫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

103
00:08:20,510 --> 00:08:26,780
‫i przekompilujmy teraz w tym przypadku, ponieważ dodałem tę funkcję tylko w C++ i to

104
00:08:26,780 --> 00:08:30,020
‫nie jest możliwe do wywołania według planu.

105
00:08:30,020 --> 00:08:34,940
‫Myślę, że nie muszę ponownie uruchamiać edytora, aby ta funkcja działała, zamknąć

106
00:08:34,940 --> 00:08:39,530
‫dziennik wyjściowy, iść do naszego gargulca, zacząć grać i go podnieść.

107
00:08:39,770 --> 00:08:49,400
‫Wyjdźmy z tej klatki i wetknijmy ją we wnękę, a oni idą. Schodzi w dół, ale zatrzymuje się, gdy tylko gargulec

108
00:08:49,400 --> 00:08:56,600
‫wypadnie, co nie jest idealne, ponieważ gargulec tak naprawdę nie jest trzymany w miejscu, a ściana

109
00:08:56,600 --> 00:08:59,060
‫nie jest całkowicie w dół.

110
00:08:59,150 --> 00:09:03,020
‫A ponieważ symuluje fizykę, wyskoczy z tej wnęki, prawda?

111
00:09:03,020 --> 00:09:10,580
‫Musimy więc upewnić się, że gdy wrzucimy go do naszego obszaru wyzwalania, zostanie tam naprawiony i po

112
00:09:10,580 --> 00:09:11,780
‫prostu pozostanie.

113
00:09:11,780 --> 00:09:14,210
‫To będzie temat następnego wykładu.

114
00:09:14,210 --> 00:09:15,200
‫Zobaczę cię tam.

