﻿1
00:00:04,170 --> 00:00:04,650
‫Hej.

2
00:00:04,650 --> 00:00:05,610
‫Witamy spowrotem.

3
00:00:05,640 --> 00:00:11,010
‫Teraz mamy nasz pocisk i wiemy, że generuje zdarzenia trafienia, więc musimy coś zrobić,

4
00:00:11,010 --> 00:00:14,250
‫gdy pocisk faktycznie trafi w nasz cel.

5
00:00:14,280 --> 00:00:19,200
‫Teraz będzie to wiązało się z zadawaniem obrażeń, co oznacza, że potrzebujemy sposobu na śledzenie stanu zdrowia.

6
00:00:19,200 --> 00:00:24,840
‫Stworzymy więc klasę do radzenia sobie ze zdrowiem i obrażeniami zwaną komponentem zdrowia.

7
00:00:24,930 --> 00:00:30,720
‫Powodem, dla którego ta funkcja ma swoją własną klasę, jest to, że możemy ją ponownie wykorzystać w różnych

8
00:00:30,720 --> 00:00:32,690
‫klasach, takich jak czołg i wieża.

9
00:00:32,700 --> 00:00:35,250
‫Porozmawiajmy więc o tym składniku zdrowotnym.

10
00:00:35,640 --> 00:00:38,900
‫Teraz znamy klasę użycia komponentu sceny.

11
00:00:38,910 --> 00:00:43,390
‫Cóż, ta klasa wywodzi się z klasy zwanej komponentem aktora.

12
00:00:43,410 --> 00:00:47,220
‫W rzeczywistości, oto dokumentacja komponentu użycia sceny.

13
00:00:47,220 --> 00:00:53,100
‫A w hierarchii dziedziczenia widać, że nadrzędnym elementem jest twój aktor.

14
00:00:53,130 --> 00:00:57,330
‫Teraz grasz jako składnik jest bardziej podstawowy niż ten, który widziałeś.

15
00:00:57,420 --> 00:00:59,070
‫Nie ma transformacji.

16
00:00:59,070 --> 00:01:05,020
‫Tak więc lokalizacja, rotacja i skala nie są czymś, co ma nawet komponent twojego aktora.

17
00:01:05,040 --> 00:01:06,930
‫Nie obsługuje przywiązania.

18
00:01:06,930 --> 00:01:12,660
‫Nie można dołączyć aktywnego komponentu do, powiedzmy, statycznego komponentu siatki lub komponentu kapsułki.

19
00:01:12,660 --> 00:01:15,180
‫To po prostu coś, co należy do aktora.

20
00:01:15,180 --> 00:01:20,910
‫A ponieważ nie ma wizualnej reprezentacji ani transformacji, nie musimy jej do niczego przyczepiać.

21
00:01:21,000 --> 00:01:27,060
‫Porównaj to z komponentem sceny use, który faktycznie ma transformację i możliwość

22
00:01:27,060 --> 00:01:31,640
‫dołączania się do innych komponentów lub dołączania innych komponentów.

23
00:01:31,650 --> 00:01:36,450
‫Tak więc, aby śledzić stan zdrowia i dbać o uszkodzenia, nie potrzebujemy żadnej z tych rzeczy.

24
00:01:36,450 --> 00:01:39,990
‫Więc grasz, że składnik będzie do tego idealny.

25
00:01:40,170 --> 00:01:44,880
‫Wróćmy więc do edytora i uczyńmy nasz nowy akt klasą komponentu.

26
00:01:44,880 --> 00:01:48,690
‫Przejdźmy więc do narzędzi i nowej klasy C++.

27
00:01:48,690 --> 00:01:51,890
‫A jeśli przewinę w dół, widzę komponent aktora.

28
00:01:51,900 --> 00:01:53,730
‫Oto, co zamierzamy wybrać.

29
00:01:53,760 --> 00:01:54,630
‫Teraz bądź ostrożny.

30
00:01:54,630 --> 00:01:56,400
‫Nie wybieraj aktora.

31
00:01:56,400 --> 00:01:57,750
‫To inna klasa.

32
00:01:57,750 --> 00:02:02,610
‫W rzeczywistości jest to większa klasa i ma o wiele więcej rzeczy niż aktor.

33
00:02:02,610 --> 00:02:07,560
‫Potrzebujemy konkretnie komponentu aktora, więc wybierz go, kliknij Dalej.

34
00:02:07,560 --> 00:02:11,490
‫I to możemy nazwać po prostu komponentem zdrowotnym.

35
00:02:11,880 --> 00:02:13,740
‫Kliknijmy Utwórz klasę.

36
00:02:14,190 --> 00:02:21,420
‫Teraz mamy nasze nowe komponenty zdrowia i pliki CP i możesz zobaczyć, że ty komponent zdrowia,

37
00:02:21,420 --> 00:02:25,980
‫klasa, którą właśnie utworzyliśmy, jest pochodną twojego działania jako komponentu.

38
00:02:25,980 --> 00:02:30,390
‫Upewnij się więc, że masz tutaj właściwy typ, a zobaczysz, że ma on w swoim U.

39
00:02:30,390 --> 00:02:31,710
‫Makro klasy.

40
00:02:31,740 --> 00:02:36,360
‫Ta meta określa, gdzie i mówi, że jest to składnik tabeli odradzania.

41
00:02:36,360 --> 00:02:41,790
‫To właśnie pozwoli nam dodać ten komponent bezpośrednio do planów, co

42
00:02:41,790 --> 00:02:43,050
‫zrobimy teraz.

43
00:02:43,050 --> 00:02:48,960
‫Nowy komponent zdrowotny zajmie się zdrowiem, co oznacza, że potrzebujemy kilku zmiennych.

44
00:02:48,960 --> 00:02:52,380
‫Dodajmy je i ustawię je jako prywatne.

45
00:02:52,380 --> 00:02:58,500
‫Więc śmiało dodajmy sekcję prywatną tuż pod sekcją chronioną i możemy dodać kilka zmiennych

46
00:02:58,500 --> 00:02:59,700
‫dotyczących zdrowia.

47
00:02:59,700 --> 00:03:04,290
‫Teraz będą to pływaki, a pierwszą nazwę Max Health.

48
00:03:04,320 --> 00:03:10,440
‫Będzie to maksymalna ilość zdrowia, jaką możemy mieć i możemy ustawić ją na domyślną wartość,

49
00:03:10,440 --> 00:03:12,180
‫taką jak 100 F.

50
00:03:12,180 --> 00:03:18,000
‫Teraz, oprócz maksymalnego zdrowia, będziemy mieli wartość zdrowia, która będzie aktualnym zdrowiem i

51
00:03:18,000 --> 00:03:20,850
‫to się zmieni, gdy otrzymamy obrażenia.

52
00:03:20,850 --> 00:03:24,720
‫Zróbmy więc kolejny float i po prostu nazwijmy to jednym zdrowiem.

53
00:03:24,720 --> 00:03:30,900
‫Teraz możemy zainicjować zdrowie na zero F, a następnie ustawić jego wartość i rozpocząć grę.

54
00:03:30,900 --> 00:03:37,380
‫Powodem, dla którego to zrobimy, jest to, że Max Health będzie miał swoją własną właściwość, która pozwoli nam

55
00:03:37,380 --> 00:03:39,690
‫ustawić ją z poziomu panelu szczegółów.

56
00:03:39,690 --> 00:03:43,470
‫Nadajmy więc tej właściwości U i edytujmy ją w dowolnym miejscu.

57
00:03:43,680 --> 00:03:46,500
‫W ten sposób możemy to zmienić w miarę rozwoju.

58
00:03:46,500 --> 00:03:53,700
‫A potem w składowych zdrowia CP tutaj i zaczynamy grę, możemy po prostu ustawić zdrowie równe wartości

59
00:03:53,700 --> 00:03:54,600
‫maksymalnego zdrowia.

60
00:03:54,600 --> 00:04:00,390
‫W ten sposób po rozpoczęciu gry zdrowie będzie miało wartość maksymalnego zdrowia, nawet po zmianie

61
00:04:00,390 --> 00:04:01,860
‫w panelu szczegółów.

62
00:04:02,040 --> 00:04:09,420
‫OK, więc skompilujmy to i wróćmy tutaj w edytorze, otworzę BP -- tank i otworzę

63
00:04:09,420 --> 00:04:10,920
‫edytor pełnego schematu.

64
00:04:10,920 --> 00:04:16,200
‫A teraz mogę dodać ten komponent zdrowia tutaj w panelu komponentów.

65
00:04:16,290 --> 00:04:20,130
‫Więc kliknę Dodaj i wyszukaj zdrowie.

66
00:04:20,370 --> 00:04:22,350
‫I tu widzimy zdrowie.

67
00:04:22,530 --> 00:04:25,860
‫Teraz nazwaliśmy to komponentem zdrowia w C++.

68
00:04:25,860 --> 00:04:29,670
‫W rzeczywistości wyskakujące okienko pokazuje, że nazywa się to komponentem zdrowotnym.

69
00:04:29,670 --> 00:04:33,420
‫Więc usuwa tę część składową, gdy pokazuje ją tutaj.

70
00:04:33,420 --> 00:04:38,220
‫I być może zauważyłeś, że kiedy szukasz statycznych komponentów siatki lub komponentów kapsuł,

71
00:04:38,220 --> 00:04:40,890
‫nie widzisz tutaj słowa komponent dla nich.

72
00:04:40,890 --> 00:04:48,270
‫Więc kliknij na zdrowie i teraz mamy nasz komponent zdrowia, a zobaczysz, że pod komponentem zdrowie mamy maksymalne

73
00:04:48,270 --> 00:04:55,080
‫zdrowie i jest ono ustawione na 100 i nie widzimy zdrowia, ponieważ nie pokazaliśmy tej zmiennej.

74
00:04:55,170 --> 00:05:02,430
‫Więc teraz BP -- tank ma składnik zdrowia i powiedział, że czołg posiada ten składnik zdrowia, BP

75
00:05:02,430 --> 00:05:03,390
‫-- tank.

76
00:05:03,860 --> 00:05:06,590
‫Jest właścicielem tego składnika zdrowotnego.

77
00:05:06,620 --> 00:05:13,760
‫Skompilujmy i zapiszmy, zamknijmy i otwórzmy wieżyczkę pionka BP i otwórzmy pełny edytor planów, a także

78
00:05:13,760 --> 00:05:16,930
‫możemy dodać komponent zdrowia do wieżyczki stawowej.

79
00:05:16,940 --> 00:05:21,620
‫Kliknijmy więc dodaj składniki, wyszukaj zdrowie i wybierz zdrowie.

80
00:05:21,620 --> 00:05:25,490
‫A teraz na wieży mamy również komponent zdrowia.

81
00:05:25,670 --> 00:05:30,560
‫Więc mam zamiar skompilować i zapisać je, zamknąć i zapisać wszystko.

82
00:05:30,590 --> 00:05:36,650
‫Mamy teraz komponent zdrowotny i wspomnieliśmy, że chcielibyśmy mieć komponent zdrowotny, abyśmy mogli go ponownie

83
00:05:36,650 --> 00:05:38,740
‫wykorzystać w różnych klasach.

84
00:05:38,750 --> 00:05:44,330
‫Więc jeśli mamy pionka na świecie, powiedzmy, naszą wieżę, będzie ona miała swój własny komponent zdrowia, a

85
00:05:44,330 --> 00:05:47,040
‫nasz czołg może mieć swój własny komponent zdrowia.

86
00:05:47,060 --> 00:05:52,340
‫Teraz, gdy nasz pocisk wchodzi w interakcję z którymkolwiek z tych elementów, na przykład, gdy

87
00:05:52,340 --> 00:05:57,680
‫generuje zdarzenie trafienia, gdy uderza w jedną z tych rzeczy, nasze pionki mogą uruchomić pewną funkcjonalność

88
00:05:57,680 --> 00:06:00,830
‫w komponencie zdrowia i zmienić te wartości zdrowia.

89
00:06:00,830 --> 00:06:07,820
‫Umieszczenie funkcji zdrowia w komponencie, a następnie dodanie tego komponentu do klasy ma pewne zalety w

90
00:06:07,820 --> 00:06:13,760
‫porównaniu z alternatywą, która polegałaby na prostym umieszczeniu funkcji zdrowia w podstawowej klasie

91
00:06:13,760 --> 00:06:17,520
‫pionka i odziedziczeniu jej w czołgu i wieży.

92
00:06:17,540 --> 00:06:25,280
‫Widzisz, to pozwala nam utrzymać małe klasy czołgów i wież i zajmować się tylko określoną funkcjonalnością dla

93
00:06:25,280 --> 00:06:26,420
‫tych klas.

94
00:06:26,420 --> 00:06:32,840
‫Natomiast składnik zdrowia można dodać do dowolnego innego aktora, na przykład rzeczy, które nie zachowują się jak czołgi

95
00:06:32,840 --> 00:06:33,800
‫lub wieże.

96
00:06:33,800 --> 00:06:39,290
‫Możemy na przykład zrobić zniszczalną ścianę, która może zostać zniszczona, gdy tylko dozna odpowiednich

97
00:06:39,290 --> 00:06:39,950
‫obrażeń.

98
00:06:39,950 --> 00:06:43,910
‫Porozmawiajmy więc trochę o tym, jak możemy to zrobić teraz.

99
00:06:43,910 --> 00:06:50,810
‫Unreal Engine ma wbudowaną funkcjonalność uszkodzenia, a jego uszkodzony system jest w rzeczywistości dość wyrafinowany.

100
00:06:50,810 --> 00:06:58,490
‫Każdy aktor w naszej grze dziedziczy pewną liczbę zdarzeń obrażeń, z których jedno jest wywołane, aby otrzymać jakiekolwiek obrażenia.

101
00:06:58,490 --> 00:07:03,440
‫To jest delegat multiemisji, tak jak w przypadku trafienia komponentu.

102
00:07:03,470 --> 00:07:08,360
‫Teraz dodamy składniki zdrowia do naszych pionków i będą one oparte na naszym U.

103
00:07:08,360 --> 00:07:09,860
‫Klasa składnika zdrowia.

104
00:07:09,860 --> 00:07:16,550
‫Skoro więc wiemy, że nasze pionki odziedziczą to po otrzymaniu dowolnego delegata obrażeń, to jeśli stworzymy własną

105
00:07:16,550 --> 00:07:22,640
‫funkcję niestandardową w klasie komponentu zdrowia, możemy użyć tej funkcji jako wywołania zwrotnego i przypisać

106
00:07:22,640 --> 00:07:25,940
‫ją do zadania po otrzymaniu obrażeń delegat.

107
00:07:25,940 --> 00:07:33,200
‫Tak więc za każdym razem, gdy zostanie wygenerowane zdarzenie uszkodzenia, delegat przy odbiorze może rozgłaszać i wywołane zostaną

108
00:07:33,200 --> 00:07:37,460
‫wszystkie powiązane z nim funkcje na jego liście wywołań.

109
00:07:37,460 --> 00:07:42,320
‫Więc następne pytanie brzmi: jak sprawić, by delegat zaczął nadawać?

110
00:07:42,320 --> 00:07:45,080
‫Potrzebujemy sposobu na wygenerowanie zdarzenia szkody.

111
00:07:45,080 --> 00:07:52,070
‫Cóż, w statystykach rozgrywki jest funkcja, która właśnie to zrobi i nazywa się to zadawaniem obrażeń.

112
00:07:52,070 --> 00:07:58,550
‫Jeśli użyjemy tej statycznej funkcji ze statystyk twojej rozgrywki do zadawania obrażeń, zadawanie obrażeń wymaga

113
00:07:58,550 --> 00:08:02,180
‫wielu parametrów, w tym aktora, który otrzymuje obrażenia.

114
00:08:02,180 --> 00:08:09,620
‫Tak więc, jeśli wywołamy Apply damage, aktorzy biorący udział w odbiorze obrażeń zostaną zwolnieni, a funkcja wywołania zwrotnego

115
00:08:09,620 --> 00:08:11,720
‫zostanie wywołana w odpowiedzi.

116
00:08:11,720 --> 00:08:15,830
‫Tak więc zastosowanie obrażeń jest tym, co generuje zdarzenie uszkodzenia.

117
00:08:15,830 --> 00:08:19,520
‫Aby to wszystko ustawić, mamy trzy kroki.

118
00:08:19,520 --> 00:08:25,760
‫Najpierw utwórz funkcję zwrotną, a ponieważ będzie ona związana z otrzymaniem jakichkolwiek obrażeń, musi mieć

119
00:08:25,760 --> 00:08:31,550
‫prawidłowe parametry wejściowe, aby po otrzymaniu jakichkolwiek obrażeń wywołała ją i przekazywała wszystkie

120
00:08:31,550 --> 00:08:33,950
‫powiązane informacje o zdarzeniu uszkodzenia.

121
00:08:34,130 --> 00:08:37,970
‫Krok drugi to powiązanie tego wywołania zwrotnego z delegatem.

122
00:08:38,000 --> 00:08:43,850
‫Widzieliśmy, jak to zrobić za pomocą delegata trafienia w składniku przy użyciu funkcji dodawania dynamicznego.

123
00:08:43,850 --> 00:08:45,530
‫Zrobimy to samo tutaj.

124
00:08:45,530 --> 00:08:52,000
‫Trzecim krokiem jest wygenerowanie zdarzenia uszkodzenia poprzez wywołanie statycznej funkcji gry, obrażenia

125
00:08:52,010 --> 00:08:52,670
‫zadane.

126
00:08:52,670 --> 00:08:56,210
‫Wróćmy więc do kodu i zacznijmy to konfigurować.

127
00:08:56,600 --> 00:08:56,880
‫Dobra.

128
00:08:56,960 --> 00:09:01,910
‫Więc jesteśmy tutaj w komponencie zdrowia i dodamy funkcję zwrotną.

129
00:09:01,910 --> 00:09:05,810
‫To może być nieważne i możemy to nazwać jak tylko chcemy.

130
00:09:05,960 --> 00:09:08,450
‫Nazwę to obrażeniami odniesionymi.

131
00:09:08,450 --> 00:09:14,870
‫A ponieważ wiążemy to z delegatem, musi on mieć prawidłowe parametry wejściowe odpowiednie dla

132
00:09:14,870 --> 00:09:16,280
‫tego delegata.

133
00:09:16,310 --> 00:09:23,240
‫Teraz dla funkcji powiązanych z delegatem on take any damage delegate lista parametrów wejściowych musi wyglądać następująco.

134
00:09:23,240 --> 00:09:30,830
‫Pierwszym z nich jest wskaźnik aktorski o nazwie Uszkodzony aktor i tak to brzmi.

135
00:09:30,830 --> 00:09:33,320
‫To aktor ponosi obrażenia.

136
00:09:33,350 --> 00:09:38,480
‫Dalej jest pływak zwany obrażeniami i jest to rzeczywista kwota obrażeń.

137
00:09:38,510 --> 00:09:45,950
‫Teraz mamy wskaźnik kosztu typu obrażeń zwany typem obrażeń.

138
00:09:46,220 --> 00:09:52,430
‫A powodem, dla którego mamy ten parametr wejściowy, jest to, że Unreal Engine ma koncepcję typów obrażeń.

139
00:09:52,430 --> 00:09:59,090
‫Możesz tworzyć niestandardowe typy obrażeń, które mają dodatkowe dane, które mogą Cię informować o wykonaniu różnych czynności w zależności od

140
00:09:59,090 --> 00:10:01,100
‫rodzaju obrażeń, które możesz mieć.

141
00:10:01,100 --> 00:10:02,000
‫Obrażenia od ognia.

142
00:10:02,000 --> 00:10:03,260
‫Szkody spowodowane przez truciznę.

143
00:10:03,320 --> 00:10:05,570
‫Obrażenia wybuchowe i tak dalej.

144
00:10:05,570 --> 00:10:11,330
‫A jeśli chcesz zaimplementować niestandardową funkcjonalność dla każdego typu uszkodzenia, zaimplementuj to we

145
00:10:11,330 --> 00:10:13,430
‫własnym niestandardowym typie uszkodzenia.

146
00:10:13,460 --> 00:10:19,040
‫Teraz nie tworzymy własnego, niestandardowego typu obrażeń, ale ponieważ wiążemy tę funkcję z delegatem

147
00:10:19,040 --> 00:10:22,940
‫przy odbiorze obrażeń, musi ona mieć te parametry wejściowe.

148
00:10:22,940 --> 00:10:24,380
‫Więc włączamy to tutaj.

149
00:10:24,410 --> 00:10:32,090
‫Teraz następnym parametrem jest wskaźnik kontrolera A, który nazywa się instigator i Unreal Engine

150
00:10:32,090 --> 00:10:33,330
‫Damage System.

151
00:10:33,350 --> 00:10:38,050
‫Za szkodę odpowiedzialny jest inicjator.

152
00:10:38,060 --> 00:10:45,110
‫Więc jeśli szkoda została ostatecznie spowodowana przez gracza kontrolującego pionka, to inicjatorem jest kontroler, który

153
00:10:45,110 --> 00:10:46,820
‫posiada ten pionek.

154
00:10:46,850 --> 00:10:49,600
‫Teraz nie zawsze musi być prowokator.

155
00:10:49,610 --> 00:10:52,580
‫Gdyby go nie było, byłoby to po prostu zerowe.

156
00:10:52,580 --> 00:10:59,510
‫A teraz otrzymuję czerwone zawijasy, abym mógł dalej zadeklarować klasę kontrolera A tutaj w nawiasach dla

157
00:10:59,510 --> 00:11:00,410
‫funkcji.

158
00:11:00,440 --> 00:11:06,980
‫Teraz ostatnim parametrem jest wskaźnik aktora A, a ten nazywa się Damage Causer.

159
00:11:07,010 --> 00:11:10,370
‫To jest rzeczywisty aktor powodujący szkody.

160
00:11:10,370 --> 00:11:13,220
‫To byłby sam pocisk.

161
00:11:13,310 --> 00:11:20,670
‫Więc zadeklarowaliśmy tę funkcję zwrotną po otrzymaniu obrażeń i podobnie jak nasza inna funkcja zwrotna przy trafieniu.

162
00:11:20,690 --> 00:11:22,970
‫To musi być funkcja u.

163
00:11:22,970 --> 00:11:28,550
‫Więc damy mu makro funkcji, aby upewnić się, że działa, gdy powiążemy je z

164
00:11:28,550 --> 00:11:30,620
‫delegatem przy odbiorze obrażeń.

165
00:11:30,950 --> 00:11:35,680
‫A teraz, kiedy to zadeklarowaliśmy, jesteśmy gotowi do zdefiniowania go w pliku CPP.

166
00:11:35,690 --> 00:11:38,540
‫Więc tutaj w składnikach zdrowotnych, CPP.

167
00:11:38,630 --> 00:11:45,530
‫Na dole zamierzam nadać tej funkcji treść i w pełni zakwalifikować funkcję

168
00:11:45,530 --> 00:11:46,970
‫nazwą klasy.

169
00:11:46,970 --> 00:11:49,400
‫A teraz mamy oddzwonienie.

170
00:11:49,400 --> 00:11:52,400
‫Więc teraz musimy powiązać to z delegatem.

171
00:11:52,400 --> 00:11:59,180
‫Ale delegat nie istnieje w komponencie zdrowotnym, istnieje w szczególności na aktorach.

172
00:11:59,180 --> 00:12:05,970
‫Chcemy powiązać to z otrzymaniem wszelkich obrażeń od delegata pionka, który jest właścicielem tego komponentu.

173
00:12:05,990 --> 00:12:11,570
‫Jak więc uzyskać dostęp do właściciela tego komponentu, aby móc powiązać się z jednym z jego delegatów?

174
00:12:11,570 --> 00:12:17,270
‫Cóż, zrobilibyśmy to i zaczęlibyśmy grać, a sposób, w jaki możemy uzyskać dostęp do właściciela komponentu,

175
00:12:17,270 --> 00:12:19,460
‫jest poprzez funkcję właściciela git.

176
00:12:19,460 --> 00:12:23,530
‫Jeśli najedziesz na to kursorem, zobaczysz, że zwraca wskaźnik aktora.

177
00:12:23,540 --> 00:12:27,620
‫To jest wskaźnik do aktora, który jest właścicielem komponentu.

178
00:12:27,620 --> 00:12:32,990
‫Komponenty mogą być własnością pionków, mogą być własnością aktorów, więc zwróci

179
00:12:32,990 --> 00:12:35,630
‫właściciela w postaci wskaźnika aktora.

180
00:12:35,810 --> 00:12:42,890
‫Mamy więc naszą funkcję zwrotną, a naszym drugim krokiem jest powiązanie jej z delegatem po otrzymaniu obrażeń,

181
00:12:42,890 --> 00:12:46,640
‫które pojawią się u pionka będącego właścicielem komponentu zdrowia.

182
00:12:46,790 --> 00:12:53,870
‫Więc ponieważ masz doświadczenie w wiązaniu wywołań zwrotnych do delegatów, będzie to wyzwanie w klasie

183
00:12:53,870 --> 00:12:55,100
‫komponentów zdrowia.

184
00:12:55,100 --> 00:13:02,420
‫W Rozpocznij grę, będziesz wiązał obrażenia otrzymane przy odbiorze z każdym delegatem obrażeń, który istnieje

185
00:13:02,420 --> 00:13:04,190
‫u właściciela komponentu.

186
00:13:04,190 --> 00:13:08,090
‫Więc masz zamiar uzyskać dostęp do tego delegata za pomocą funkcji Pobierz właściciela.

187
00:13:08,090 --> 00:13:13,640
‫Innymi słowy, zadzwonisz do właściciela, a następnie uzyskasz dostęp, aby otrzymać jakiekolwiek obrażenia.

188
00:13:13,640 --> 00:13:20,660
‫Od tego momentu wiesz, jak powiązać wywołania zwrotne z delegatami za pomocą funkcji add dynamic, jeśli

189
00:13:20,660 --> 00:13:28,250
‫utkniesz, zobacz, jak powiązaliśmy wywołanie zwrotne po trafieniu z delegatem po trafieniu komponentu, wstrzymaj wideo i powiąż

190
00:13:28,250 --> 00:13:31,790
‫obrażenia otrzymane od delegata po otrzymaniu obrażeń.

191
00:13:35,000 --> 00:13:35,360
‫Dobra.

192
00:13:35,360 --> 00:13:40,610
‫Wróciliśmy więc do komponentu zdrowia i jesteśmy gotowi do powiązania naszej funkcji zwrotnej.

193
00:13:40,610 --> 00:13:47,390
‫Więc tutaj i zacznijmy grać, uzyskamy dostęp do właściciela za pomocą funkcji właściciela git, a stamtąd

194
00:13:47,390 --> 00:13:54,770
‫użyjemy operatora strzałki, aby uzyskać dostęp do tego wezwanego delegata, otrzymać dowolne obrażenia i dalej otrzymywać dowolne

195
00:13:54,770 --> 00:14:01,520
‫obrażenia ma dynamikę dodawania funkcji i po prostu pobiera obiekt użytkownika i nazwę funkcji.

196
00:14:01,520 --> 00:14:05,240
‫Teraz obiekt użytkownika jest obiektem, dla którego przypisujemy funkcję.

197
00:14:05,240 --> 00:14:10,130
‫Jest to klasa, która ma funkcję zwrotną i to będzie to.

198
00:14:10,190 --> 00:14:14,420
‫I wreszcie mamy naszą funkcję zwrotną, którą będzie ty.

199
00:14:14,420 --> 00:14:16,790
‫Otrzymane obrażenia od składnika zdrowia.

200
00:14:16,790 --> 00:14:23,690
‫Teraz musimy zapamiętać adres operatora, ponieważ w rzeczywistości jest to adres funkcji.

201
00:14:23,690 --> 00:14:31,460
‫Więc teraz otrzymane obrażenia są związane z otrzymaniem jakichkolwiek obrażeń i są dodawane do listy wywołań delegata.

202
00:14:31,460 --> 00:14:37,790
‫Tak więc za każdym razem, gdy wygenerujemy zdarzenia obrażeń, otrzymamy transmisję od tego delegata,

203
00:14:37,790 --> 00:14:40,970
‫która spowoduje wywołanie funkcji przyjmującej obrażenia.

204
00:14:41,570 --> 00:14:48,320
‫Podsumowując, stworzyliśmy nasz własny komponent zdrowia i dodaliśmy jeden z nich zarówno do planu czołgu,

205
00:14:48,320 --> 00:14:50,540
‫jak i planu wieży.

206
00:14:50,660 --> 00:14:58,130
‫Stworzyliśmy funkcję zwrotną o nazwie Damage Taken i powiązaliśmy ją z delegatem przy odbiorze obrażeń.

207
00:14:58,130 --> 00:15:05,150
‫Następnym krokiem jest wygenerowanie zdarzenia uszkodzenia, które spowoduje rozesłanie delegata on take any damage, dzięki

208
00:15:05,150 --> 00:15:10,640
‫czemu nasze uszkodzenie funkcji wywołania zwrotnego zostanie wywołane w odpowiedzi.

209
00:15:10,640 --> 00:15:13,520
‫Zajmiemy się tym w następnym filmie.

210
00:15:14,240 --> 00:15:15,140
‫Zobaczymy się wkrótce.

