﻿1
00:00:04,340 --> 00:00:05,510
‫Ciao e Benvenuto.

2
00:00:05,510 --> 00:00:09,110
‫In questa lezione, abbiamo un A. IO. che ci segue in giro per il mondo.

3
00:00:09,110 --> 00:00:11,540
‫Andremo a indagare quando mi perderà di vista.

4
00:00:11,540 --> 00:00:13,430
‫Quindi è abbastanza difficile da perdere.

5
00:00:13,850 --> 00:00:20,030
‫Ma se vado via troppe curve, non sarà in grado di tenere il passo e

6
00:00:20,030 --> 00:00:24,920
‫alla fine perderà interesse e tornerà al punto di partenza laggiù.

7
00:00:25,430 --> 00:00:30,800
‫Questo è ciò che implementeremo in questa lezione completando il nostro compito sull'albero del comportamento.

8
00:00:31,070 --> 00:00:32,720
‫Entriamo e vediamo come è fatto.

9
00:00:33,610 --> 00:00:38,280
‫Quindi vogliamo che il nostro compito venga eseguito, per fare effettivamente qualcosa.

10
00:00:38,290 --> 00:00:42,190
‫E in particolare volevamo essere in grado di cancellare quella Blackboard Valley, fare quello che dice sulla latta.

11
00:00:42,880 --> 00:00:44,650
‫Quindi come possiamo farlo?

12
00:00:44,890 --> 00:00:49,180
‫Bene, per questo, dobbiamo passare alla nostra classe base e dare un'occhiata a ciò che è implementato lì.

13
00:00:49,190 --> 00:00:55,290
‫In effetti, dobbiamo salire di un livello più in alto, che, come puoi vedere

14
00:00:55,420 --> 00:00:57,790
‫dall'eredità dell'ottimo compito Blackboard Base.

15
00:00:57,790 --> 00:01:00,250
‫Oltre a ciò, abbiamo il nodo attività UBC.

16
00:01:00,670 --> 00:01:05,290
‫Quindi usiamo F12 per passare all'implementazione lì.

17
00:01:05,290 --> 00:01:12,640
‫E se scorri fino alla parte superiore del nodo dell'attività della barra dot h head of file, puoi vedere che ci sono le informazioni

18
00:01:12,640 --> 00:01:13,690
‫su questa classe.

19
00:01:13,690 --> 00:01:18,580
‫E la cosa più importante è che queste sono le funzioni virtuali che è più probabile

20
00:01:18,580 --> 00:01:19,690
‫che vorremo implementare.

21
00:01:20,350 --> 00:01:22,480
‫Quindi il primo è eseguire attività.

22
00:01:22,480 --> 00:01:25,780
‫Viene chiamato quando l'attività inizia a essere eseguita.

23
00:01:26,590 --> 00:01:32,710
‫Abbiamo quindi un'attività sulla scheda, ovvero quando viene deciso che dobbiamo interrompere l'esecuzione, ad esempio, perché

24
00:01:32,710 --> 00:01:37,030
‫una condizione è diventata falsa e abbiamo impostato la segnalazione.

25
00:01:37,030 --> 00:01:38,490
‫Quindi interrompe questo compito.

26
00:01:39,070 --> 00:01:43,690
‫L'attività di spunta si verifica tutte le volte che l'attività è in esecuzione, ma non il primo segno di spunta.

27
00:01:43,690 --> 00:01:49,330
‫Quindi la prima attività chiamerà l'attività di esecuzione, in seguito continuerà a chiamare un'attività di spunta ogni volta.

28
00:01:50,230 --> 00:01:56,140
‫E questo è per comportamenti che potrebbero durare più di un tick, come il passaggio a un nemico potrebbe

29
00:01:56,140 --> 00:01:57,160
‫richiedere più tick.

30
00:01:57,520 --> 00:01:59,650
‫Quindi tick task ci permette di fare qualcosa.

31
00:01:59,650 --> 00:02:05,230
‫Ogni messaggio di spunta e su è per altre cose diverse dall'interruzione che potrebbe inviare un messaggio a questa

32
00:02:05,230 --> 00:02:05,680
‫attività.

33
00:02:05,920 --> 00:02:09,220
‫Non dobbiamo davvero preoccuparci di questa particolare funzione.

34
00:02:09,220 --> 00:02:10,750
‫Quindi i primi tre sono pronti.

35
00:02:10,750 --> 00:02:16,870
‫Quelli erano più interessati e visto che il nostro compito consiste semplicemente nell'azzerare il valore

36
00:02:16,870 --> 00:02:21,200
‫della lavagna non appena viene eseguito e poi finirà immediatamente.

37
00:02:21,420 --> 00:02:23,890
‫Non ha bisogno di fare cose su più tick.

38
00:02:24,190 --> 00:02:26,830
‫Siamo interessati all'attività di esecuzione.

39
00:02:27,310 --> 00:02:33,670
‫Quindi, se cerchiamo in questa testa di file per eseguire l'attività, puoi vedere che la firma completa è qui e

40
00:02:33,670 --> 00:02:37,150
‫il tipo restituito qui è questo risultato del nodo IBT.

41
00:02:38,200 --> 00:02:43,420
‫E prende in due cose il componente proprietario e la memoria del nodo.

42
00:02:43,840 --> 00:02:48,820
‫Ora il motivo per cui occupa la memoria del nodo è un po'

43
00:02:48,820 --> 00:02:58,860
‫complicato, ma la cosa importante da sapere qui è che una classe di attività o un'istanza di classe di attività, ce n'è solo una per tutte le lavagne.

44
00:02:58,870 --> 00:03:04,930
‫Essenzialmente, vengono condivisi tra tutto, motivo per cui se vuoi salvare alcune informazioni relative a

45
00:03:04,930 --> 00:03:12,310
‫un nodo in un particolare albero del comportamento, allora quello che devi fare è memorizzarle in questo puntatore

46
00:03:12,310 --> 00:03:13,420
‫di memoria.

47
00:03:13,750 --> 00:03:16,150
‫Ma non faremo nulla di simile.

48
00:03:16,150 --> 00:03:18,520
‫È un po' più avanzato doverlo fare.

49
00:03:18,700 --> 00:03:23,830
‫E ci sono altri modi per aggirare questo problema, come consentire a Unreal di creare più istanze per ogni albero

50
00:03:23,830 --> 00:03:28,390
‫del comportamento, che potrebbe essere un po' pulito o meno, ma questo è un modo leggermente più

51
00:03:28,390 --> 00:03:30,390
‫efficiente e non dobbiamo preoccuparci di esso.

52
00:03:30,400 --> 00:03:35,590
‫In definitiva, ciò che ci interessa è il fatto che possiamo arrivare al nostro componente proprietario, il componente albero del comportamento, e

53
00:03:35,590 --> 00:03:40,900
‫da lì possiamo arrivare ad altre cose come il pedone, ecc. Ma questo è anche l'argomento

54
00:03:40,900 --> 00:03:43,150
‫di un'altra lezione.

55
00:03:43,390 --> 00:03:48,760
‫Quindi ciò che è interessante e importante ora è solo implementare ed eseguire attività.

56
00:03:48,970 --> 00:03:55,270
‫Quindi copieremo la firma, andremo su Clear Blackboard Value Dot H e vediamo solo, questo

57
00:03:55,270 --> 00:03:56,530
‫è pubblico ora?

58
00:03:56,530 --> 00:03:59,830
‫Penso che questo sarà protetto perché è nella sezione predefinita.

59
00:04:00,130 --> 00:04:05,170
‫Quindi creeremo noi stessi una sezione protetta e la incolleremo lì e poi andremo avanti e

60
00:04:05,170 --> 00:04:08,440
‫creeremo l'override solo per assicurarci di essere al sicuro.

61
00:04:08,440 --> 00:04:14,440
‫E poi creeremo un'implementazione nel C++, ricordando che vogliamo sempre chiamare super quando

62
00:04:14,440 --> 00:04:21,460
‫stiamo sovrascrivendo l'attività, quindi super esegui con il componente proprietario e la memoria del nodo che

63
00:04:21,460 --> 00:04:24,370
‫vengono richiamati sul nostro genitore qui.

64
00:04:24,430 --> 00:04:30,640
‫E poi quello che vogliamo fare è prendere la nostra lavagna in modo da poter cancellare la chiave.

65
00:04:30,730 --> 00:04:32,200
‫E ci sono due cose che sono importanti qui.

66
00:04:32,200 --> 00:04:35,110
‫Innanzitutto, come facciamo a sapere quale chiave è stata selezionata?

67
00:04:35,110 --> 00:04:41,170
‫Bene, se andiamo alla nostra lavagna basata su H, puoi vedere che uno dei metodi è ottenere la chiave

68
00:04:41,170 --> 00:04:42,280
‫della lavagna selezionata.

69
00:04:42,280 --> 00:04:48,160
‫Quindi puoi facilmente chiamarlo qualsiasi C++, ottenere la chiave della lavagna selezionata e quella tornerà.

70
00:04:48,160 --> 00:04:54,010
‫Se ci passi sopra, restituisce un nome F, il nome F della chiave della lavagna che è stata selezionata nell'albero

71
00:04:54,040 --> 00:04:54,700
‫del comportamento.

72
00:04:54,700 --> 00:04:59,380
‫Ora, l'altra cosa che dobbiamo fare è essere effettivamente in grado di entrare in possesso della lavagna relativa a questo

73
00:04:59,380 --> 00:05:00,250
‫albero del comportamento.

74
00:05:00,250 --> 00:05:02,110
‫Quindi, per questo, abbiamo il nostro comp.

75
00:05:02,500 --> 00:05:07,810
‫Ora notate qui che il tipo di comp proprietario che viene passato qui è in realtà un riferimento, non un puntatore.

76
00:05:08,110 --> 00:05:09,820
‫Quindi non può essere nullo per cominciare.

77
00:05:09,820 --> 00:05:10,510
‫È fantastico.

78
00:05:10,810 --> 00:05:15,520
‫Ma significa anche che dobbiamo usare l'operatore DOT piuttosto che l'operatore alla

79
00:05:15,520 --> 00:05:21,820
‫freccia perché non stiamo usando un puntatore e da qui possiamo semplicemente ottenere i componenti della lavagna.

80
00:05:21,940 --> 00:05:24,360
‫In modo che ottenga solo il componente della lavagna se ci passi sopra con il mouse.

81
00:05:24,370 --> 00:05:29,470
‫Questo è un puntatore a un componente della lavagna, quindi dovrai usare gli operatori freccia.

82
00:05:29,470 --> 00:05:32,650
‫Quindi sappiamo già come cancellare i tasti sulla lavagna.

83
00:05:33,240 --> 00:05:34,500
‫Sarà la tua sfida.

84
00:05:34,530 --> 00:05:36,660
‫Quindi si spera che la sfida non sia troppo complicata.

85
00:05:36,670 --> 00:05:38,400
‫Si desidera cancellare la chiave selezionata.

86
00:05:38,740 --> 00:05:41,520
‫Possiamo controllare dove l'abbiamo fatto prima.

87
00:05:42,210 --> 00:05:44,850
‫Hai bisogno di include per fare questo?

88
00:05:44,850 --> 00:05:47,070
‫Forse la lavagna ne ha bisogno.

89
00:05:47,070 --> 00:05:53,500
‫Includi usa la chiave selezionata nell'albero del comportamento come chiave che vogliamo cancellare.

90
00:05:53,520 --> 00:05:55,320
‫Quindi metti in pausa il video e prova.

91
00:05:55,530 --> 00:05:55,920
‫Bene.

92
00:05:55,920 --> 00:05:56,460
‫Ben tornato.

93
00:05:56,790 --> 00:05:58,720
‫Quindi proviamoci.

94
00:05:58,740 --> 00:06:01,530
‫Quindi la prima cosa è che abbiamo il nostro componente lavagna.

95
00:06:01,530 --> 00:06:03,000
‫Usiamo l'operatore freccia qui.

96
00:06:03,330 --> 00:06:04,290
‫Non sta venendo fuori niente.

97
00:06:04,590 --> 00:06:11,850
‫Quindi presumo di aver bisogno e in effetti ci sono alcuni scarabocchi rossi di cui ho bisogno che un hash includa qui per fare

98
00:06:11,850 --> 00:06:15,930
‫l'albero del comportamento e quindi il componente della lavagna qui e ora.

99
00:06:15,930 --> 00:06:21,240
‫Spero che il mio completamento automatico dovrebbe funzionare, il che mi consentirà di avere il clear.

100
00:06:21,240 --> 00:06:23,550
‫Proviamo solo a rinfrescare i nostri ricordi.

101
00:06:23,550 --> 00:06:25,150
‫Dove l'abbiamo fatto prima?

102
00:06:25,170 --> 00:06:30,120
‫Se andiamo a sparare, controllo A e do un'occhiata a quello che abbiamo qui.

103
00:06:30,120 --> 00:06:31,440
‫Abbiamo un valore chiaro.

104
00:06:31,440 --> 00:06:32,730
‫È quello che stiamo cercando.

105
00:06:32,730 --> 00:06:35,400
‫Quindi proviamo quel valore chiaro.

106
00:06:35,400 --> 00:06:36,510
‫E cosa prende?

107
00:06:36,510 --> 00:06:41,100
‫Richiede un tasto F o un nome F, un ottimo nome f che possiamo ottenere.

108
00:06:41,490 --> 00:06:46,800
‫E dove abbiamo detto che avremmo potuto ottenerlo con la chiave lavagna get select che si trova su questa classe perché

109
00:06:46,800 --> 00:06:48,000
‫è nella classe genitore.

110
00:06:48,000 --> 00:06:53,880
‫Quindi ottieni la chiave della lavagna selezionata. Semplicemente, stiamo cancellando il valore della chiave della lavagna selezionata.

111
00:06:53,910 --> 00:06:55,530
‫Ora, un'ultima cosa che dobbiamo fare.

112
00:06:55,530 --> 00:06:57,030
‫Questo non faceva parte della sfida, quindi non preoccuparti.

113
00:06:57,030 --> 00:07:03,150
‫Se non sapevi che è necessario restituire perché esiste un valore di ritorno per l'attività di esecuzione del valore

114
00:07:03,180 --> 00:07:06,780
‫della lavagna chiara e il valore di ritorno è piuttosto interessante.

115
00:07:06,780 --> 00:07:07,350
‫Diamo un'occhiata.

116
00:07:07,350 --> 00:07:12,570
‫Seguiamolo con un F12 e vediamo quali diversi stati possiamo restituire dal nostro test di esecuzione.

117
00:07:12,600 --> 00:07:14,370
‫Ora il primo è riuscito.

118
00:07:14,380 --> 00:07:14,700
‫Grande.

119
00:07:14,700 --> 00:07:19,470
‫Ciò sostanzialmente segnala all'albero del comportamento che questa nota è terminata e possiamo passare a

120
00:07:19,800 --> 00:07:20,790
‫quella successiva.

121
00:07:20,820 --> 00:07:21,870
‫Fallito di nuovo.

122
00:07:21,870 --> 00:07:27,420
‫Questo è un finito, quindi possiamo passare al prossimo, ma questa volta sta dicendo che è fallito.

123
00:07:27,420 --> 00:07:34,230
‫In modo che dia le diverse indicazioni, ad esempio, ai nostri nodi di sequenza o ai nostri nodi selezionati su ciò

124
00:07:34,230 --> 00:07:36,510
‫che quei nodi dovrebbero effettivamente fare.

125
00:07:37,320 --> 00:07:44,610
‫Poi siamo stati abortiti, che è sostanzialmente la stessa cosa del fallimento e abbiamo in corso.

126
00:07:44,970 --> 00:07:51,330
‫Se torni in corso da un'attività di esecuzione, in pratica dirà che devi continuare a chiamare tick fino

127
00:07:51,360 --> 00:07:57,090
‫a quando non ti dico diversamente, finché non dico che ho finito ora non lo useremo.

128
00:07:57,090 --> 00:08:02,670
‫Ma è bene tenere presente che se è necessario creare un'attività di lunga durata che

129
00:08:02,670 --> 00:08:06,030
‫verrà eseguita su più tick, dovremo tornare in corso.

130
00:08:06,030 --> 00:08:07,980
‫Ma come ho detto, vogliamo riuscito.

131
00:08:08,520 --> 00:08:10,200
‫Quindi entriamo e facciamolo.

132
00:08:10,200 --> 00:08:12,450
‫Restituisce il risultato del nodo vuoto.

133
00:08:13,470 --> 00:08:14,280
‫Colon.

134
00:08:14,580 --> 00:08:20,280
‫E avrà successo perché siamo riusciti a cancellare quel valore praticamente in ogni caso.

135
00:08:20,880 --> 00:08:25,440
‫Quindi possiamo andare avanti e salvare tutto questo, andare nell'editor e premere compila.

136
00:08:25,440 --> 00:08:31,470
‫E quando sarà completo, andiamo avanti e apriamo la nostra IA e l'albero del comportamento.

137
00:08:31,710 --> 00:08:33,300
‫Quindi quello è un nemico di Beattie?

138
00:08:33,450 --> 00:08:35,460
‫Lo aggancio alla finestra principale e diamo un'occhiata.

139
00:08:35,460 --> 00:08:36,600
‫Abbiamo una lavagna chiara.

140
00:08:36,600 --> 00:08:42,060
‫Il valore ora dovrebbe consentirci di spostarci nell'ultima posizione nota, cancellare il valore della

141
00:08:42,060 --> 00:08:48,840
‫lavagna, attendere cinque, quindi dovremmo vedere che l'indagine sull'ultima posizione di gioco nota dovrebbe essere annullata, quindi

142
00:08:48,840 --> 00:08:52,170
‫dovremmo tornare alla nostra posizione di partenza .

143
00:08:52,170 --> 00:08:56,760
‫Quindi vediamo se questo comportamento ora funziona ora che l'attività è completamente implementata.

144
00:08:56,760 --> 00:09:00,120
‫Quindi viene da me, mi sta indagando.

145
00:09:00,570 --> 00:09:01,620
‫Vado a nascondermi.

146
00:09:01,770 --> 00:09:02,340
‫Quindi entriamo.

147
00:09:02,340 --> 00:09:04,170
‫Hides viene a indagare.

148
00:09:04,170 --> 00:09:05,310
‫Andiamo a nasconderci di nuovo.

149
00:09:05,850 --> 00:09:06,990
‫Quindi vai e nasconditi.

150
00:09:07,770 --> 00:09:09,810
‫Vediamo se riusciamo a individuarlo laggiù.

151
00:09:10,170 --> 00:09:15,870
‫Dovrebbe aspettare in questo momento e poi tornerà al suo punto di partenza, il che purtroppo

152
00:09:16,050 --> 00:09:18,270
‫lo fa incrociare con me.

153
00:09:18,510 --> 00:09:25,350
‫Quindi vediamo se funziona davvero come ci aspettiamo facendo uscire il nostro nemico da una finestra e agganciandoci

154
00:09:25,380 --> 00:09:29,790
‫a destra e mettendo la nostra finestra principale a sinistra.

155
00:09:29,790 --> 00:09:34,830
‫È un po' angusto, ma possiamo accontentarci e poi cercheremo di scappare da questo ragazzo ancora una

156
00:09:34,830 --> 00:09:37,770
‫volta e vedere cosa succede con il suo comportamento.

157
00:09:37,770 --> 00:09:41,670
‫Puoi vedere che si sta spostando nell'ultimo luogo di gioco conosciuto.

158
00:09:42,540 --> 00:09:45,810
‫E ora sta aspettando, avendo liberato la valle.

159
00:09:46,050 --> 00:09:47,910
‫E poi puoi vedere che anche lui si muoverà.

160
00:09:47,910 --> 00:09:53,010
‫E puoi vedere queste barre rosse sui decoratori che ci dicono che nessuna di queste due condizioni

161
00:09:53,310 --> 00:09:53,970
‫è vera.

162
00:09:53,970 --> 00:09:57,660
‫Quindi non può fare in modo che nessuno di questi si sposti finalmente nella posizione di partenza.

163
00:09:57,930 --> 00:10:00,930
‫Quindi ora tremola perché fondamentalmente non può fare nulla.

164
00:10:01,440 --> 00:10:09,780
‫Quindi in pratica è che in questa lezione abbiamo visto come possiamo ottenere le attività beat per eseguire il codice, abbiamo capito i

165
00:10:09,780 --> 00:10:14,730
‫diversi stati che puoi restituire da eseguire attività come ottenere la lavagna dall'attività e

166
00:10:15,000 --> 00:10:19,710
‫anche come ottenere la chiave attualmente selezionata su un compito da lavagna.

167
00:10:19,830 --> 00:10:26,280
‫Nella prossima lezione, vedremo come possiamo impadronirci del mondo al di fuori dell'albero del comportamento della lavagna, come

168
00:10:26,280 --> 00:10:30,390
‫possiamo impadronirci del pedone dall'interno di un'attività dell'albero del comportamento.

169
00:10:30,420 --> 00:10:31,020
‫Lo vedrò.

