﻿1
00:00:04,340 --> 00:00:05,510
‫Cześć i witaj.

2
00:00:05,510 --> 00:00:09,110
‫W tym wykładzie mamy piątkę. I. który podąża za nami na całym świecie.

3
00:00:09,110 --> 00:00:11,540
‫Pójdziemy zbadać, kiedy straci mnie z oczu.

4
00:00:11,540 --> 00:00:13,430
‫Więc dość trudno jest stracić.

5
00:00:13,850 --> 00:00:20,030
‫Ale jeśli odejdę za wiele zakrętów, nie będzie w stanie nadążyć i w

6
00:00:20,030 --> 00:00:24,920
‫końcu straci zainteresowanie i wróci do swojej początkowej lokalizacji.

7
00:00:25,430 --> 00:00:30,800
‫To właśnie zamierzamy wprowadzić w tym wykładzie, kończąc zadanie z drzewem zachowań.

8
00:00:31,070 --> 00:00:32,720
‫Zanurzmy się i zobaczmy, jak to się robi.

9
00:00:33,610 --> 00:00:38,280
‫Więc chcemy, aby nasze zadanie zostało wykonane, aby rzeczywiście coś zrobić.

10
00:00:38,290 --> 00:00:42,190
‫A szczególnie chcieliśmy móc oczyścić tę Blackboard Valley, zrobić to, co jest napisane na puszce.

11
00:00:42,880 --> 00:00:44,650
‫Więc jak mamy to zrobić?

12
00:00:44,890 --> 00:00:49,180
‫Cóż, w tym celu musimy przejść do naszej klasy bazowej i przyjrzeć się, co jest tam zaimplementowane.

13
00:00:49,190 --> 00:00:55,290
‫W rzeczywistości musimy przejść o jeden poziom wyżej, co jak widać po odziedziczeniu

14
00:00:55,420 --> 00:00:57,790
‫optymistycznego zadania Blackboard Base.

15
00:00:57,790 --> 00:01:00,250
‫Powyżej mamy węzeł zadania UBC.

16
00:01:00,670 --> 00:01:05,290
‫Użyjmy więc F12, aby przejść do tamtejszej implementacji.

17
00:01:05,290 --> 00:01:12,640
‫A jeśli przewiniesz do góry paska zadań z kropką nagłówka pliku, zobaczysz informacje o

18
00:01:12,640 --> 00:01:13,690
‫tej klasie.

19
00:01:13,690 --> 00:01:18,580
‫A najważniejsze jest to, że są to funkcje wirtualne, które najprawdopodobniej będziemy

20
00:01:18,580 --> 00:01:19,690
‫chcieli zaimplementować.

21
00:01:20,350 --> 00:01:22,480
‫Więc pierwszym z nich jest wykonanie zadania.

22
00:01:22,480 --> 00:01:25,780
‫Jest to wywoływane, gdy zadanie zaczyna się wykonywać.

23
00:01:26,590 --> 00:01:32,710
‫Następnie mamy zadanie tablicowe, w którym zdecydowano, że musimy przestać wykonywać, na przykład dlatego,

24
00:01:32,710 --> 00:01:37,030
‫że warunek stał się fałszywy i mamy skonfigurowaną sygnalizację.

25
00:01:37,030 --> 00:01:38,490
‫Więc przerywa to zadanie.

26
00:01:39,070 --> 00:01:43,690
‫Zadanie tika dzieje się przez cały czas wykonywania zadania, ale nie pierwszy tik.

27
00:01:43,690 --> 00:01:49,330
‫Tak więc pierwsze zadanie wywoła zadanie wykonania, a następnie za każdym razem będzie wywoływać zadanie z zaznaczeniem.

28
00:01:50,230 --> 00:01:56,140
‫Dotyczy to zachowań, które mogą trwać dłużej niż jedno kliknięcie, np. przejście do wroga może wymagać

29
00:01:56,140 --> 00:01:57,160
‫kilku ruchów.

30
00:01:57,520 --> 00:01:59,650
‫Tak więc zadanie kleszczowe pozwala nam coś zrobić.

31
00:01:59,650 --> 00:02:05,230
‫Każde kliknięcie i wiadomość dotyczy innych rzeczy niż przerwanie, które mogą wysłać wiadomość do tego

32
00:02:05,230 --> 00:02:05,680
‫zadania.

33
00:02:05,920 --> 00:02:09,220
‫Tak naprawdę nie musimy się martwić o tę konkretną funkcję.

34
00:02:09,220 --> 00:02:10,750
‫Więc pierwsze trzy są gotowe.

35
00:02:10,750 --> 00:02:16,870
‫Ci byli bardziej zainteresowani i widząc, że naszym zadaniem jest po prostu wyczyszczenie wartości tablicy, gdy

36
00:02:16,870 --> 00:02:21,200
‫tylko zostanie ona wykonana, a potem od razu się zakończy.

37
00:02:21,420 --> 00:02:23,890
‫Nie musi robić rzeczy przez wiele kleszczy.

38
00:02:24,190 --> 00:02:26,830
‫Jesteśmy zainteresowani wykonaniem zadania.

39
00:02:27,310 --> 00:02:33,670
‫Więc jeśli szukamy w tym nagłówku pliku w celu wykonania zadania, możesz zobaczyć pełną sygnaturę tutaj,

40
00:02:33,670 --> 00:02:37,150
‫a typem zwracanym jest ten wynik węzła IBT.

41
00:02:38,200 --> 00:02:43,420
‫I zajmuje dwie rzeczy: komponent właściciela i pamięć węzła.

42
00:02:43,840 --> 00:02:48,820
‫Powód, dla którego zajmuje pamięć węzłów, jest trochę

43
00:02:48,820 --> 00:02:58,860
‫skomplikowany, ale ważne jest, aby wiedzieć, że klasa zadania lub instancja klasy zadania jest tylko jedna na wszystkich tablicach.

44
00:02:58,870 --> 00:03:04,930
‫Zasadniczo są one współdzielone między wszystkim, dlatego jeśli chcesz zapisać informacje związane

45
00:03:04,930 --> 00:03:12,310
‫z węzłem w jednym konkretnym drzewie zachowania, to co musisz zrobić, to zapisać je w tym

46
00:03:12,310 --> 00:03:13,420
‫wskaźniku pamięci.

47
00:03:13,750 --> 00:03:16,150
‫Ale nie zamierzamy robić nic z tym związanego.

48
00:03:16,150 --> 00:03:18,520
‫To trochę bardziej zaawansowane, żeby to zrobić.

49
00:03:18,700 --> 00:03:23,830
‫Są też inne sposoby na obejście tego, takie jak umożliwienie Unrealowi tworzenia wielu instancji dla każdego drzewa zachowań,

50
00:03:23,830 --> 00:03:28,390
‫co może być trochę schludne lub nie, ale jest to nieco bardziej wydajny sposób i nie

51
00:03:28,390 --> 00:03:30,390
‫musimy się o to martwić to.

52
00:03:30,400 --> 00:03:35,590
‫Ostatecznie to, co nas interesuje, to fakt, że możemy dostać się do naszego komponentu właściciela, komponentu drzewa zachowań, a stamtąd

53
00:03:35,590 --> 00:03:40,900
‫możemy dostać się do innych rzeczy, takich jak pionek itp. Ale to też temat

54
00:03:40,900 --> 00:03:43,150
‫innego wykładu.

55
00:03:43,390 --> 00:03:48,760
‫Ciekawe i ważne jest więc teraz samo wdrożenie i wykonanie zadania.

56
00:03:48,970 --> 00:03:55,270
‫Skopiujemy więc podpis, przejdźmy do punktu H Clear Blackboard Value i zobaczmy, czy to jest

57
00:03:55,270 --> 00:03:56,530
‫teraz publiczne?

58
00:03:56,530 --> 00:03:59,830
‫Myślę, że będzie to chronione, ponieważ znajduje się w sekcji domyślnej.

59
00:04:00,130 --> 00:04:05,170
‫Więc stworzymy sobie chronioną sekcję i wkleimy ją tam, a następnie stworzymy opcję put

60
00:04:05,170 --> 00:04:08,440
‫override, aby upewnić się, że jest ona bezpieczna.

61
00:04:08,440 --> 00:04:14,440
‫A potem stworzymy implementację w C++, pamiętając, że zawsze chcemy wywoływać

62
00:04:14,440 --> 00:04:21,460
‫super, gdy nadpisujemy zadanie tak super execute komponentem właściciela i pamięcią węzła, która jest

63
00:04:21,460 --> 00:04:24,370
‫tutaj wywoływana do naszego rodzica.

64
00:04:24,430 --> 00:04:30,640
‫A potem to, co chcemy zrobić, to chwycić naszą tablicę, abyśmy mogli wyczyścić klucz.

65
00:04:30,730 --> 00:04:32,200
‫I są tutaj dwie ważne rzeczy.

66
00:04:32,200 --> 00:04:35,110
‫Po pierwsze, skąd wiemy, jaki klucz został wybrany?

67
00:04:35,110 --> 00:04:41,170
‫Cóż, jeśli przejdziemy do naszej tablicy opartej na H, widać, że jedną z metod jest uzyskanie wybranego

68
00:04:41,170 --> 00:04:42,280
‫klucza tablicy.

69
00:04:42,280 --> 00:04:48,160
‫Możesz więc łatwo nazwać to dowolnym C++, pobrać wybrany klawisz tablicy i to wróci.

70
00:04:48,160 --> 00:04:54,010
‫Jeśli najedziemy na nią kursorem, zwróci nazwę F, nazwę klawisza tablicy, który został wybrany w drzewie

71
00:04:54,040 --> 00:04:54,700
‫zachowań.

72
00:04:54,700 --> 00:04:59,380
‫Teraz inną rzeczą, którą musimy zrobić, jest rzeczywiście możliwość uchwycenia tablicy związanej z tym

73
00:04:59,380 --> 00:05:00,250
‫drzewem zachowań.

74
00:05:00,250 --> 00:05:02,110
‫Więc do tego mamy własny komp.

75
00:05:02,500 --> 00:05:07,810
‫Zwróćmy teraz uwagę, że rodzaj przekazywanej tutaj kompozycji właściciela jest w rzeczywistości odniesieniem, a nie wskaźnikiem.

76
00:05:08,110 --> 00:05:09,820
‫Więc na początek nie może być zerowa.

77
00:05:09,820 --> 00:05:10,510
‫To wspaniale.

78
00:05:10,810 --> 00:05:15,520
‫Ale oznacza to również, że musimy użyć operatora DOT zamiast

79
00:05:15,520 --> 00:05:21,820
‫operatora strzałki, ponieważ nie używamy wskaźnika i stąd możemy po prostu uzyskać elementy tablicy.

80
00:05:21,940 --> 00:05:24,360
‫To po prostu dostaje element tablicy, jeśli najedziesz na niego kursorem.

81
00:05:24,370 --> 00:05:29,470
‫Ten jest wskaźnikiem do elementu tablicy, więc będziesz musiał użyć operatorów strzałek.

82
00:05:29,470 --> 00:05:32,650
‫Więc już wiemy, jak wyczyścić klawisze na tablicy.

83
00:05:33,240 --> 00:05:34,500
‫To będzie twoje wyzwanie.

84
00:05:34,530 --> 00:05:36,660
‫Miejmy więc nadzieję, że wyzwanie nie jest zbyt skomplikowane.

85
00:05:36,670 --> 00:05:38,400
‫Chcesz wyczyścić wybrany klucz.

86
00:05:38,740 --> 00:05:41,520
‫Możesz sprawdzić, gdzie zrobiliśmy to wcześniej.

87
00:05:42,210 --> 00:05:44,850
‫Czy potrzebujesz do tego żadnych dodatków?

88
00:05:44,850 --> 00:05:47,070
‫Może tablica tego potrzebuje.

89
00:05:47,070 --> 00:05:53,500
‫Uwzględnij użyj klucza wybranego w drzewie zachowań jako klucza, który chcemy wyczyścić.

90
00:05:53,520 --> 00:05:55,320
‫Więc zatrzymaj wideo i spróbuj.

91
00:05:55,530 --> 00:05:55,920
‫Dobra.

92
00:05:55,920 --> 00:05:56,460
‫Witamy spowrotem.

93
00:05:56,790 --> 00:05:58,720
‫Więc spróbujmy.

94
00:05:58,740 --> 00:06:01,530
‫Więc pierwszą rzeczą jest to, że mamy nasz element tablicy.

95
00:06:01,530 --> 00:06:03,000
‫Użyjmy tutaj operatora strzałki.

96
00:06:03,330 --> 00:06:04,290
‫Nic się nie dzieje.

97
00:06:04,590 --> 00:06:11,850
‫Więc zakładam, że potrzebuję i rzeczywiście jest kilka czerwonych zawijasów, które potrzebuję dołączyć tutaj hash, aby zrobić

98
00:06:11,850 --> 00:06:15,930
‫drzewo zachowań, a następnie element tablicy tu i teraz.

99
00:06:15,930 --> 00:06:21,240
‫Mam nadzieję, że moje autouzupełnianie powinno działać, co pozwoli mi uzyskać jasność.

100
00:06:21,240 --> 00:06:23,550
‫Spróbujmy tylko odświeżyć nasze wspomnienia.

101
00:06:23,550 --> 00:06:25,150
‫Gdzie zrobiliśmy to wcześniej?

102
00:06:25,170 --> 00:06:30,120
‫Jeśli podejdziemy, żeby strzelić, kontroluję A i patrzę, co tu mamy.

103
00:06:30,120 --> 00:06:31,440
‫Mamy wyraźną wartość.

104
00:06:31,440 --> 00:06:32,730
‫To jest ten, którego szukamy.

105
00:06:32,730 --> 00:06:35,400
‫Spróbujmy więc tę wyraźną wartość.

106
00:06:35,400 --> 00:06:36,510
‫A co to zabiera?

107
00:06:36,510 --> 00:06:41,100
‫Przyjmuje klawisz F lub nazwę F, świetną nazwę f, którą możemy uzyskać.

108
00:06:41,490 --> 00:06:46,800
‫A gdzie powiedzieliśmy, że możemy to uzyskać za pomocą klawisza pobierz wybraną tablicę, który znajduje się w tej klasie, ponieważ znajduje

109
00:06:46,800 --> 00:06:48,000
‫się w klasie nadrzędnej.

110
00:06:48,000 --> 00:06:53,880
‫Więc pobierz wybrany klucz tablicy Po prostu, usuwamy wartość wybranego klawisza tablicy.

111
00:06:53,910 --> 00:06:55,530
‫Teraz ostatnia rzecz, którą musimy zrobić.

112
00:06:55,530 --> 00:06:57,030
‫To nie była część wyzwania, więc nie martw się.

113
00:06:57,030 --> 00:07:03,150
‫Jeśli nie wiedziałeś, że musimy zwrócić, ponieważ istnieje wartość zwracana dla zadania wykonania jasnej

114
00:07:03,180 --> 00:07:06,780
‫wartości tablicy, a wartość zwracana jest dość interesująca.

115
00:07:06,780 --> 00:07:07,350
‫Spójrzmy.

116
00:07:07,350 --> 00:07:12,570
‫Podążmy za nim klawiszem F12 i zobaczmy, jakie różne statusy możemy zwrócić z naszego testu wykonania.

117
00:07:12,600 --> 00:07:14,370
‫Teraz udało się pierwszemu.

118
00:07:14,380 --> 00:07:14,700
‫Świetny.

119
00:07:14,700 --> 00:07:19,470
‫To w zasadzie sygnalizuje drzewu zachowań, że wykonanie tej notatki zostało zakończone i możemy przejść

120
00:07:19,800 --> 00:07:20,790
‫do następnej.

121
00:07:20,820 --> 00:07:21,870
‫Znowu się nie udało.

122
00:07:21,870 --> 00:07:27,420
‫To jest skończone, więc możemy przejść do następnego, ale tym razem mówi, że się nie udało.

123
00:07:27,420 --> 00:07:34,230
‫Daje to różne wskazania, na przykład, naszym węzłom sekwencji lub naszym wybranym węzłom, co do tego, co

124
00:07:34,230 --> 00:07:36,510
‫te węzły powinny faktycznie robić.

125
00:07:37,320 --> 00:07:44,610
‫Potem zostaliśmy przerwani, co w zasadzie jest tym samym, co porażka i mamy postęp.

126
00:07:44,970 --> 00:07:51,330
‫Jeśli wrócisz w trakcie wykonywania zadania, będzie to oznaczać, że musisz nadal wywoływać tick, dopóki nie

127
00:07:51,360 --> 00:07:57,090
‫powiem ci inaczej, dopóki nie powiem, że skończyłem, teraz nie będziemy tego używać.

128
00:07:57,090 --> 00:08:02,670
‫Ale dobrze jest pamiętać, że jeśli chcesz utworzyć zadanie, które długo działa, będzie przebiegało

129
00:08:02,670 --> 00:08:06,030
‫z wieloma tikami, będziemy musieli wrócić w toku.

130
00:08:06,030 --> 00:08:07,980
‫Ale jak powiedziałem, chcemy, żeby się udało.

131
00:08:08,520 --> 00:08:10,200
‫Więc wejdźmy i zróbmy to.

132
00:08:10,200 --> 00:08:12,450
‫Zwróć wynik pustego węzła.

133
00:08:13,470 --> 00:08:14,280
‫Okrężnica.

134
00:08:14,580 --> 00:08:20,280
‫I to się uda, ponieważ udało nam się oczyścić tę wartość w zasadzie bez względu na wszystko.

135
00:08:20,880 --> 00:08:25,440
‫Możemy więc iść dalej i zapisać to wszystko, przejść do edytora i nacisnąć kompilację.

136
00:08:25,440 --> 00:08:31,470
‫A kiedy to się skończy, przejdźmy dalej i otwórzmy naszą sztuczną inteligencję i drzewo zachowań.

137
00:08:31,710 --> 00:08:33,300
‫Więc to jest jeden wróg Beattie?

138
00:08:33,450 --> 00:08:35,460
‫Podłączam go do głównego okna i zobaczmy.

139
00:08:35,460 --> 00:08:36,600
‫Mamy czystą tablicę.

140
00:08:36,600 --> 00:08:42,060
‫Wartość powinna teraz umożliwiać nam przejście do ostatniej znanej lokalizacji, wyczyszczenie wartości tablicy,

141
00:08:42,060 --> 00:08:48,840
‫odczekanie pięciu, a następnie powinniśmy zobaczyć, że badanie tej ostatniej znanej lokalizacji gry powinno być wyłączone, więc

142
00:08:48,840 --> 00:08:52,170
‫powinniśmy wrócić do naszej początkowej lokalizacji .

143
00:08:52,170 --> 00:08:56,760
‫Zobaczmy więc, czy to zachowanie działa teraz, gdy zadanie zostało w pełni zaimplementowane.

144
00:08:56,760 --> 00:09:00,120
‫Więc on podchodzi do mnie, prowadzi śledztwo.

145
00:09:00,570 --> 00:09:01,620
‫Pójdę się schować.

146
00:09:01,770 --> 00:09:02,340
‫Więc wejdźmy.

147
00:09:02,340 --> 00:09:04,170
‫Hides nadchodzi do zbadania.

148
00:09:04,170 --> 00:09:05,310
‫Chodźmy znów się schować.

149
00:09:05,850 --> 00:09:06,990
‫Więc idź i schowaj się.

150
00:09:07,770 --> 00:09:09,810
‫Zobaczmy, czy uda nam się go tam dostrzec.

151
00:09:10,170 --> 00:09:15,870
‫Powinien w tej chwili czekać, a potem wraca do swojego miejsca startu, co niestety powoduje,

152
00:09:16,050 --> 00:09:18,270
‫że krzyżuje się ze mną.

153
00:09:18,510 --> 00:09:25,350
‫Zobaczmy więc, czy to rzeczywiście działa tak, jak się spodziewamy, wyprowadzając wroga przez okno i dokując po

154
00:09:25,380 --> 00:09:29,790
‫prawej stronie i umieszczając nasze główne okno po lewej stronie.

155
00:09:29,790 --> 00:09:34,830
‫Jest trochę ciasno, ale damy radę, a potem spróbujemy jeszcze raz uciec od tego gościa

156
00:09:34,830 --> 00:09:37,770
‫i zobaczyć, co się stanie z jego zachowaniem.

157
00:09:37,770 --> 00:09:41,670
‫Widać, że przenosi się do ostatniego znanego miejsca gry.

158
00:09:42,540 --> 00:09:45,810
‫A teraz czeka, oczyściwszy dolinę.

159
00:09:46,050 --> 00:09:47,910
‫A potem widać, że on też się poruszy.

160
00:09:47,910 --> 00:09:53,010
‫Widać, że te czerwone paski na dekoratorach mówią nam, że żaden z tych dwóch warunków nie

161
00:09:53,310 --> 00:09:53,970
‫jest prawdziwy.

162
00:09:53,970 --> 00:09:57,660
‫Więc nie może zrobić żadnego z tych, w końcu przenieść się do miejsca początkowego.

163
00:09:57,930 --> 00:10:00,930
‫Więc teraz migocze, ponieważ w zasadzie nie może nic zrobić.

164
00:10:01,440 --> 00:10:09,780
‫Tak więc w zasadzie na tym wykładzie widzieliśmy, w jaki sposób możemy uzyskać zadania bitów w celu wykonania kodu, rozumiejąc

165
00:10:09,780 --> 00:10:14,730
‫różne statusy, które można przywrócić z zadania wykonania, jak uzyskać tablicę z

166
00:10:15,000 --> 00:10:19,710
‫zadania, a także jak włączyć aktualnie wybrany klawisz zadanie tablicy.

167
00:10:19,830 --> 00:10:26,280
‫W następnym wykładzie zobaczymy, jak możemy przejąć świat poza drzewem zachowań tablicy, jak możemy

168
00:10:26,280 --> 00:10:30,390
‫przejąć kontrolę nad pionkiem z zadania drzewa zachowań.

169
00:10:30,420 --> 00:10:31,020
‫Zobaczę to.

