﻿1
00:00:04,130 --> 00:00:05,550
‫Ehi, bentornato.

2
00:00:05,570 --> 00:00:10,940
‫In questo video creeremo un timer per il conto alla rovescia in modo che il giocatore sappia quanto tempo

3
00:00:10,940 --> 00:00:16,250
‫deve aspettare prima di poter iniziare a spostare il proprio carro armato e far esplodere le cose.

4
00:00:16,250 --> 00:00:22,280
‫Quindi mostreremo il tempo rimasto nel conto alla rovescia fino all'inizio del gioco.

5
00:00:22,280 --> 00:00:25,580
‫Quindi entriamo nell'editor e iniziamo a farlo.

6
00:00:25,850 --> 00:00:33,620
‫Ora sono qui nel nostro Widget Blueprint, BP Start Game Widget, e questo è l'editor di widget come abbiamo

7
00:00:33,620 --> 00:00:34,160
‫visto.

8
00:00:34,160 --> 00:00:39,560
‫Ma potresti aver notato che in alto a destra ci sono due schede qui, una che dice designer.

9
00:00:39,560 --> 00:00:42,890
‫Questo è ciò in cui ci troviamo in questo momento e uno che dice grafico.

10
00:00:42,890 --> 00:00:50,570
‫E se fai clic sul grafico, sembra più un grafico di eventi del progetto con nodi di eventi e una scheda

11
00:00:50,600 --> 00:00:53,180
‫del mio progetto qui con varie sezioni.

12
00:00:53,180 --> 00:00:56,120
‫Ed è qui che possiamo fare la logica del progetto.

13
00:00:56,120 --> 00:00:57,920
‫Ora abbiamo tre nodi qui.

14
00:00:57,920 --> 00:01:00,080
‫Abbiamo un pre costrutto dell'evento.

15
00:01:00,080 --> 00:01:07,910
‫Questo è simile a un costruttore in C++ e quindi abbiamo un costrutto di eventi che è simile per iniziare a giocare.

16
00:01:07,910 --> 00:01:13,460
‫Quindi è qui che è più appropriato fare le cose all'inizio del gioco perché tutte le classi

17
00:01:13,460 --> 00:01:18,500
‫rilevanti sono costruite a questo punto e quindi abbiamo un segno di spunta dell'evento.

18
00:01:18,500 --> 00:01:24,020
‫E proprio come la funzione tick in C++, qui abbiamo accesso al tempo Delta.

19
00:01:24,020 --> 00:01:28,670
‫Ora non useremo i primi due nodi, quindi li evidenzierò e li eliminerò e

20
00:01:28,670 --> 00:01:30,650
‫useremo la tecnologia degli eventi.

21
00:01:30,650 --> 00:01:37,670
‫Ora, il nostro obiettivo per questo video è mostrare quanto tempo è rimasto e ora abbiamo un conto alla

22
00:01:37,670 --> 00:01:40,100
‫rovescia di tre secondi in C++.

23
00:01:40,100 --> 00:01:45,260
‫Abbiamo creato un handle del timer e abbiamo utilizzato il world timer manager per avviare un timer.

24
00:01:45,260 --> 00:01:49,010
‫Tutto ciò che facciamo qui nei progetti è indipendente da quello.

25
00:01:49,040 --> 00:01:55,790
‫Stiamo creando un sistema logico completamente diverso qui e coinciderà semplicemente con quel timer che abbiamo

26
00:01:55,790 --> 00:01:57,470
‫impostato in C++.

27
00:01:57,470 --> 00:02:02,090
‫Quindi questo è tutto diverso e indipendente dal lato C++.

28
00:02:02,120 --> 00:02:10,850
‫Ora qui nel widget di avvio del gioco WB, possiamo aggiungere variabili proprio come possiamo aggiungere variabili in C++ proprio qui.

29
00:02:10,850 --> 00:02:18,380
‫Sotto il mio progetto, posso fare clic su aggiungi e seleziona variabile e ora ho una variabile chiamata new var

30
00:02:18,410 --> 00:02:19,340
‫underscore zero.

31
00:02:19,340 --> 00:02:25,250
‫E qui sotto nel pannello dei dettagli, che si trova in modo confuso sul lato sinistro, ora abbiamo il nome

32
00:02:25,250 --> 00:02:26,870
‫e il tipo di variabile.

33
00:02:26,870 --> 00:02:32,240
‫Ora è evidenziato per impostazione predefinita perché ci si aspetta solo che rinominerai le tue variabili non

34
00:02:32,240 --> 00:02:33,380
‫appena le crei.

35
00:02:33,380 --> 00:02:35,690
‫Quindi non abbiamo bisogno di questo nome predefinito.

36
00:02:35,690 --> 00:02:37,820
‫Lo chiameremo con il nostro nome.

37
00:02:37,820 --> 00:02:39,290
‫Lo chiamerò conto alla rovescia.

38
00:02:39,290 --> 00:02:46,160
‫E Countdown sarà una variabile float Y perché terrà traccia di quanto tempo

39
00:02:46,160 --> 00:02:47,360
‫ci resta.

40
00:02:47,360 --> 00:02:53,450
‫Inizierò a 3 secondi e ad ogni fotogramma sottrarrò la quantità di tempo

41
00:02:53,450 --> 00:02:55,400
‫trascorso dal fotogramma precedente.

42
00:02:55,400 --> 00:02:59,750
‫Quindi otteniamo un conto alla rovescia che va da tre in giù.

43
00:02:59,750 --> 00:03:01,880
‫Ora farò clic su Compila.

44
00:03:01,910 --> 00:03:07,820
‫Ora, non appena faccio clic su Compila, posso assegnargli un valore predefinito scorrendo verso il basso nei dettagli.

45
00:03:07,820 --> 00:03:10,550
‫Pannello, è impostato su zero per impostazione predefinita.

46
00:03:10,550 --> 00:03:16,100
‫Lo imposterò su tre per impostazione predefinita poiché abbiamo un conto alla rovescia di tre secondi.

47
00:03:16,100 --> 00:03:22,040
‫Ora così com'è, questo è solo un float chiamato Countdown con un valore di tre.

48
00:03:22,040 --> 00:03:28,490
‫In realtà non l'abbiamo cambiato, ma ogni singolo fotogramma del gioco, vorrei sottrarre il tempo Delta, che è

49
00:03:28,490 --> 00:03:32,660
‫la quantità di tempo che è trascorso dal fotogramma precedente.

50
00:03:32,660 --> 00:03:39,980
‫E in questo modo, Countdown aggiornerà costantemente il decremento del tempo Delta in modo da avere un conteggio del tempo

51
00:03:40,010 --> 00:03:41,120
‫di esecuzione.

52
00:03:41,150 --> 00:03:42,980
‫Ora, ecco come possiamo farlo.

53
00:03:42,980 --> 00:03:50,030
‫Prenderò un conto alla rovescia dalla nostra scheda Il mio progetto, fare clic e trascinarlo qui nel grafico dell'evento

54
00:03:50,030 --> 00:03:50,870
‫e rilasciare.

55
00:03:50,870 --> 00:03:53,480
‫Ora, non appena rilascio, ho due opzioni.

56
00:03:53,480 --> 00:03:56,060
‫Ottieni il conto alla rovescia e imposta il conto alla rovescia.

57
00:03:56,060 --> 00:04:02,090
‫Se faccio clic su Ottieni conto alla rovescia, ora ho la nota del conto alla rovescia e se faccio clic e trascino fuori dal

58
00:04:02,120 --> 00:04:05,240
‫suo output, questo mi dà accesso al valore del conto alla rovescia.

59
00:04:05,240 --> 00:04:12,310
‫Ora posso anche fare clic su Countdown, trascinare e fare clic su Imposta conto alla rovescia e abbiamo un nodo impostato.

60
00:04:12,320 --> 00:04:13,910
‫Li abbiamo visti entrambi prima.

61
00:04:13,910 --> 00:04:21,230
‫Nei video precedenti, il pin di input per il setter ci consente di inserire un valore float e quindi il conto alla rovescia

62
00:04:21,230 --> 00:04:23,210
‫verrà impostato su quel valore.

63
00:04:23,210 --> 00:04:30,260
‫Quindi, come possiamo effettivamente sottrarre il tempo Delta dal conto alla rovescia e quindi impostarlo sul valore del conto alla rovescia?

64
00:04:30,260 --> 00:04:37,820
‫Bene, possiamo prendere il nostro nodo di conto alla rovescia qui e posso fare clic e trascinarlo via e digitare il

65
00:04:37,850 --> 00:04:41,600
‫simbolo meno sulla mia tastiera e scegliere il nodo Sottrai.

66
00:04:41,600 --> 00:04:47,660
‫Se lo seleziono, ora ho un float meno float o un nodo di sottrazione.

67
00:04:47,660 --> 00:04:50,960
‫Vedrai che dice Target is Kismet Math Library.

68
00:04:50,960 --> 00:04:54,800
‫Questo ti dice che Kismet Math Library è alla base di questo nodo.

69
00:04:54,800 --> 00:04:58,100
‫Tutti i nodi hanno il codice C++ al loro interno.

70
00:04:58,310 --> 00:05:01,460
‫Quindi quello che fa questo nodo è che richiede due input.

71
00:05:01,490 --> 00:05:03,500
‫Richiede un input float.

72
00:05:03,560 --> 00:05:05,370
‫E ci vuole un secondo input float.

73
00:05:05,390 --> 00:05:09,560
‫Ora, non cambierà nessuna delle variabili che stiamo passando.

74
00:05:09,590 --> 00:05:16,700
‫Eseguirà semplicemente un calcolo e restituirà quel valore che è il risultato della sottrazione.

75
00:05:16,730 --> 00:05:24,140
‫Ora vorrei prendere il conto alla rovescia e sottrarre il tempo delta da esso in modo da poter prendere il pin di

76
00:05:24,140 --> 00:05:31,340
‫uscita chiamato in tempo delta dal nodo del segno di spunta dell'evento e collegarlo direttamente al secondo input nel mio nodo di

77
00:05:31,340 --> 00:05:31,910
‫sottrazione.

78
00:05:31,970 --> 00:05:38,520
‫Quindi quello che sto facendo è prendere il conto alla rovescia meno delta time e poi questo ottiene il risultato.

79
00:05:38,540 --> 00:05:43,660
‫Ora inizialmente il conto alla rovescia è di 3 secondi e il tempo delta è un valore molto piccolo.

80
00:05:43,670 --> 00:05:47,900
‫È la quantità di tempo in secondi trascorsa dall'ultimo fotogramma.

81
00:05:47,900 --> 00:05:50,000
‫Quindi questa sarebbe una piccola quantità.

82
00:05:50,000 --> 00:05:56,490
‫Quindi ciò che risulterà la prima volta che viene eseguito è tre meno una piccola quantità.

83
00:05:56,510 --> 00:06:01,880
‫E quello che vorrei fare è impostare il valore del conto alla rovescia uguale a quel risultato, ogni singolo fotogramma.

84
00:06:01,880 --> 00:06:06,500
‫Quindi ogni conto alla rovescia dei fotogrammi viene sottratto a poco a poco.

85
00:06:06,500 --> 00:06:10,940
‫E in questo modo manterrà il conto alla rovescia da 3 secondi verso il basso.

86
00:06:10,940 --> 00:06:16,820
‫Quindi prenderò il risultato di ritorno da questo nodo di sottrazione e lo collegherò all'input per il nodo

87
00:06:16,820 --> 00:06:18,490
‫del conto alla rovescia impostato.

88
00:06:18,500 --> 00:06:25,070
‫Ora, questo non farà nulla se non collego il cavo di esecuzione dall'evento, spuntando il pin di esecuzione al

89
00:06:25,070 --> 00:06:28,400
‫pin di input per impostare il conto alla rovescia.

90
00:06:28,400 --> 00:06:34,070
‫Quindi ora ciò che sta facendo è che ogni singolo fotogramma sottrae il tempo delta dal conto alla rovescia, prendendo

91
00:06:34,070 --> 00:06:37,850
‫quel risultato e impostando il conto alla rovescia su quel nuovo valore.

92
00:06:37,880 --> 00:06:41,000
‫Ora possiamo vedere come si comporta con un nodo di stringa di stampa.

93
00:06:41,000 --> 00:06:47,210
‫Quindi trascinerò la stringa di stampa del tipo setter e otterrò un nodo della stringa di stampa.

94
00:06:47,210 --> 00:06:53,390
‫E poi vorrei stampare il valore del conto alla rovescia in modo da poter prendere il valore restituito dal setter, che

95
00:06:53,390 --> 00:06:59,330
‫ci darà il nuovo valore del conto alla rovescia per ogni fotogramma e lo collegherà al nodo della stringa.

96
00:06:59,480 --> 00:07:05,750
‫E nota che vedo un float convertito in stringa e se rilascio ora ottengo un nodo di conversione che prenderà

97
00:07:05,750 --> 00:07:10,400
‫il mio float, lo convertirà in una stringa e ora possiamo stamparlo sullo schermo.

98
00:07:10,400 --> 00:07:13,010
‫Ora vediamo cosa succede se premo play.

99
00:07:13,490 --> 00:07:14,450
‫Verificalo.

100
00:07:14,450 --> 00:07:22,250
‫Vediamo che il conteggio viene documentato in ogni fotogramma e stiamo inviando spam allo schermo con il valore del conto alla rovescia

101
00:07:22,250 --> 00:07:24,590
‫e sta diventando sempre più negativo.

102
00:07:24,590 --> 00:07:29,080
‫Quindi questo è il primo passo per far funzionare il nostro conto alla rovescia.

103
00:07:29,090 --> 00:07:30,800
‫Lo chiuderò ora.

104
00:07:30,800 --> 00:07:34,940
‫Abbiamo visto che stiamo stampando un valore float che ha un mucchio di punti decimali.

105
00:07:34,940 --> 00:07:40,400
‫E una volta stampato il valore sullo schermo, non vogliamo punti decimali, vorremmo un numero intero.

106
00:07:40,400 --> 00:07:46,100
‫Quindi mi piacerebbe vedere la quantità di secondi rimasti senza quelle cifre finali a destra del punto

107
00:07:46,100 --> 00:07:46,640
‫decimale.

108
00:07:46,640 --> 00:07:48,410
‫Quindi quello di cui ho bisogno è un numero intero.

109
00:07:48,410 --> 00:07:53,930
‫Bene, quello che posso fare è eliminare questo nodo di conversione e prendere

110
00:07:53,930 --> 00:08:01,730
‫il risultato del setter del conto alla rovescia e digitare C E I'll seal, che è l'abbreviazione di seal.

111
00:08:01,760 --> 00:08:08,750
‫L'operazione di sigillatura prenderà un valore float e lo arrotonda per eccesso all'intero più vicino.

112
00:08:08,750 --> 00:08:12,320
‫Quindi se siamo a tre, beh, non c'è bisogno di arrotondare.

113
00:08:12,320 --> 00:08:15,680
‫Restituirà un numero intero con un valore tre.

114
00:08:15,680 --> 00:08:22,430
‫Ma se siamo a 2. 9, ad esempio, il nodo sigillo lo arrotonda per eccesso a tre.

115
00:08:22,430 --> 00:08:29,480
‫E man mano che quel valore diminuisce, continuerà a restituire tre finché non scendiamo a due.

116
00:08:29,480 --> 00:08:31,970
‫Quindi otterremo sempre un numero intero.

117
00:08:31,970 --> 00:08:37,640
‫Ora posso inserirlo nella stringa di stampa e vedrai che dice Converti intero in stringa.

118
00:08:37,640 --> 00:08:44,720
‫Quindi ora il nodo seal sta prendendo un float, arrotondandolo all'intero più vicino e restituendo quel valore

119
00:08:44,720 --> 00:08:45,410
‫intero.

120
00:08:45,410 --> 00:08:51,530
‫Quindi ora se premo play, vedremo che otteniamo 3 a 1 e zero.

121
00:08:51,530 --> 00:08:56,660
‫E ovviamente continua a diminuire perché non diciamo mai che questo si fermi davvero.

122
00:08:56,660 --> 00:09:02,120
‫Ma questo è un ottimo inizio perché ora abbiamo accesso al numero di secondi rimasti

123
00:09:02,120 --> 00:09:05,060
‫e possiamo stampare qualcosa in risposta sullo schermo.

124
00:09:05,330 --> 00:09:09,560
‫Quindi, come stamperemo il messaggio corretto sullo schermo?

125
00:09:09,590 --> 00:09:15,050
‫Quello che vorrei fare è quando mancano 3 secondi, vorrei che il widget dicesse: Preparati.

126
00:09:15,170 --> 00:09:18,980
‫Quando mancano 2 secondi, vorrei che mostrassi il numero due.

127
00:09:18,980 --> 00:09:22,130
‫Quando abbiamo ancora un secondo, vorrei mostrare il numero uno.

128
00:09:22,130 --> 00:09:27,140
‫E quando mancano 0 secondi, vorrei che il testo dicesse Vai.

129
00:09:27,140 --> 00:09:34,910
‫Bene, possiamo farlo con un nodo switch, i nodi switch possono attivare un numero di tipi diversi, incluso

130
00:09:34,910 --> 00:09:35,360
‫INT.

131
00:09:35,390 --> 00:09:41,840
‫Ora il modo in cui funziona un interruttore su int node è che ha un numero di casi per un numero di valori.

132
00:09:41,840 --> 00:09:47,510
‫E in base al valore che passiamo a questo nodo switch, farà una di una serie di cose.

133
00:09:47,540 --> 00:09:54,410
‫Ad esempio, se passiamo il valore intero tre, otteniamo il caso tre che risulterà

134
00:09:54,410 --> 00:09:56,600
‫nell'esecuzione della cosa tre.

135
00:09:56,600 --> 00:10:03,230
‫Quindi l'interruttore sul nodo finale ha più righe di esecuzione e ne eseguirà solo una in base a.

136
00:10:03,320 --> 00:10:04,250
‫L'ingresso.

137
00:10:04,280 --> 00:10:12,200
‫Ora possiamo usare un interruttore su int node e passare un intero, ad esempio il risultato del nostro nodo seal.

138
00:10:12,320 --> 00:10:18,410
‫Quindi rimuoverò la stringa di stampa e trascinerò il nodo del conto alla rovescia e digiterò

139
00:10:18,410 --> 00:10:21,980
‫switch on INT e selezione switch on int.

140
00:10:22,010 --> 00:10:25,360
‫Ora nota che richiede un input di tipo intero.

141
00:10:25,370 --> 00:10:31,880
‫Passerò il valore di ritorno dal nodo seal e noterò anche che abbiamo un'opzione per aggiungere pin.

142
00:10:31,880 --> 00:10:39,470
‫Se facciamo clic su quello, vedrai che otteniamo un pin predefinito oltre all'output che dice zero.

143
00:10:39,650 --> 00:10:47,300
‫Ciò che dice è che se colleghiamo una logica di progetto dal pin di esecuzione zero, quella logica

144
00:10:47,300 --> 00:10:48,500
‫verrà eseguita.

145
00:10:48,530 --> 00:10:55,730
‫Se il valore di input passato è zero e se non va bene, verrà impostato automaticamente questo pin di

146
00:10:55,730 --> 00:10:56,170
‫esecuzione.

147
00:10:56,180 --> 00:11:00,470
‫Ora possiamo fare di nuovo clic su aggiungi pin e ora abbiamo zero e uno.

148
00:11:00,470 --> 00:11:05,150
‫Quindi possiamo avere due linee di esecuzione, una per zero e una per uno.

149
00:11:05,150 --> 00:11:11,760
‫E quindi se l'input non è zero o uno, verrà eseguito tutto ciò che è collegato al valore predefinito.

150
00:11:11,780 --> 00:11:14,930
‫Farò di nuovo clic su più altre due volte.

151
00:11:14,930 --> 00:11:19,370
‫Quindi abbiamo casi da zero a tre e un caso predefinito.

152
00:11:19,370 --> 00:11:26,540
‫Quindi ora sta a noi trascinare fuori questo e aggiungere un po 'di logica di progetto che vorremmo eseguita in

153
00:11:26,540 --> 00:11:30,680
‫base al valore passato che stiamo ottenendo da questo nodo SEAL.

154
00:11:31,220 --> 00:11:34,240
‫Ed è quello che vorrei che tu facessi per la tua sfida.

155
00:11:34,250 --> 00:11:41,240
‫Vorrei che stampassi messaggi diversi per ogni caso usando un nodo di stringa di stampa per il valore tre che puoi

156
00:11:41,240 --> 00:11:44,720
‫stampare preparati usando un nodo di stringa di stampa.

157
00:11:44,750 --> 00:11:50,420
‫Per i due casi, puoi semplicemente stampare il valore due per un caso, puoi stamparne uno e per

158
00:11:50,420 --> 00:11:57,470
‫il caso zero puoi stampare vai ora per il caso predefinito, stampa semplicemente avvia il gioco con il nostro nodo della stringa di

159
00:11:57,470 --> 00:11:58,040
‫stampa.

160
00:11:58,040 --> 00:12:03,320
‫Metti in pausa il video e aggiungi ora un intero gruppo di nodi di stringhe di stampa nel grafico degli eventi.

161
00:12:07,230 --> 00:12:07,740
‫Bene.

162
00:12:07,740 --> 00:12:13,590
‫Quindi vorrei andare avanti e utilizzare un nodo di stringa di stampa e inizierò qui in basso per

163
00:12:13,590 --> 00:12:16,920
‫il caso predefinito e digiterò la stringa di stampa.

164
00:12:17,820 --> 00:12:21,030
‫E la stringa che vorrei stampare è avviare il gioco.

165
00:12:21,180 --> 00:12:22,440
‫Ora, ecco una scorciatoia.

166
00:12:22,440 --> 00:12:28,020
‫Se non lo sapevi con il nodo della stringa di stampa selezionato, posso passare il mouse da

167
00:12:28,020 --> 00:12:33,720
‫qualche altra parte nel grafico degli eventi e premere control dx e questo copierà il nodo che avevo selezionato.

168
00:12:33,720 --> 00:12:40,050
‫Collegherò i tre casi a questo nodo della stringa di stampa e digiterò preparati.

169
00:12:40,200 --> 00:12:43,200
‫Quindi, quando l'input per l'interruttore è tre, vedremo.

170
00:12:43,200 --> 00:12:45,300
‫Preparati, stampato sullo schermo.

171
00:12:45,300 --> 00:12:52,260
‫Ora controllerò di nuovo DX e lo collegherò ai due casi e per due ne stamperò semplicemente due ora

172
00:12:52,260 --> 00:12:58,050
‫copierò il nodo della stringa di stampa e per uno stamperò il valore uno.

173
00:12:58,050 --> 00:13:04,470
‫E infine, un ultimo nodo della stringa di stampa qui verrà collegato al caso zero e questo

174
00:13:04,470 --> 00:13:06,060
‫dirà di andare.

175
00:13:07,110 --> 00:13:07,590
‫Bene.

176
00:13:07,590 --> 00:13:13,980
‫Quindi andiamo avanti e compiliamo questo e vado a premere play e ora vedo preparati, due, uno

177
00:13:13,980 --> 00:13:14,940
‫e via.

178
00:13:14,940 --> 00:13:18,660
‫E poi, ovviamente, vediamo l'inizio del gioco una volta che il tempo è scaduto.

179
00:13:18,660 --> 00:13:24,900
‫Quindi sappiamo che il valore sta diminuendo e sta diventando sempre più negativo, ma questo è il caso predefinito per il

180
00:13:24,900 --> 00:13:29,220
‫nostro switch ed è allora che sappiamo che possiamo effettivamente iniziare il gioco.

181
00:13:29,220 --> 00:13:34,020
‫Quindi questo è il primo passo per mostrare il nostro conto alla rovescia nel nostro widget.

182
00:13:34,050 --> 00:13:40,080
‫Non stiamo ancora cambiando del tutto il testo che dice Preparati, ma lo faremo presto.

183
00:13:40,320 --> 00:13:45,210
‫Quindi in questo video abbiamo creato Countdown Logic e l'abbiamo aggiunto al nostro progetto di widget.

184
00:13:45,240 --> 00:13:50,160
‫Abbiamo usato print string per mostrare i nostri valori di conto alla rovescia e stampare un messaggio diverso.

185
00:13:50,160 --> 00:13:52,110
‫Basato sui nostri valori di conto alla rovescia.

186
00:13:52,110 --> 00:13:56,640
‫Dobbiamo ancora impostare il testo nel widget e lo faremo nel prossimo video.

187
00:13:57,000 --> 00:13:57,990
‫Ci vediamo presto.

