﻿1
00:00:04,470 --> 00:00:05,770
‫Ehi, bentornato.

2
00:00:05,790 --> 00:00:12,240
‫In questo video, lavoreremo per mostrare il testo sullo schermo per farci sapere che il gioco sta iniziando.

3
00:00:12,240 --> 00:00:18,240
‫E questo è il primo passo per mostrare il conto alla rovescia per far sapere al giocatore che il

4
00:00:18,240 --> 00:00:21,140
‫gioco non è ancora iniziato, ma inizierà presto.

5
00:00:21,150 --> 00:00:24,900
‫Ora, questo comporterà eventi implementabili del progetto.

6
00:00:24,930 --> 00:00:32,280
‫Un evento implementabile Blueprint è una funzione C++ che possiamo chiamare da C++, ma in realtà implementiamo

7
00:00:32,280 --> 00:00:35,070
‫la funzionalità sul lato del progetto.

8
00:00:35,070 --> 00:00:41,910
‫Quindi potremmo avere la nostra classe C++ come la modalità di gioco e possiamo avere una funzione contrassegnata

9
00:00:41,910 --> 00:00:47,310
‫come un progetto, evento implementabile, e quindi possiamo implementare quel comportamento nei progetti.

10
00:00:47,310 --> 00:00:54,570
‫Quindi, quando chiamiamo la funzione C++ contrassegnata come evento implementabile del progetto, l'evento nel progetto

11
00:00:54,570 --> 00:00:55,920
‫verrà attivato.

12
00:00:55,920 --> 00:01:01,890
‫E verrà richiamata qualsiasi logica del progetto che colleghiamo a quell'evento nel progetto.

13
00:01:02,160 --> 00:01:08,640
‫Quindi creerò una funzione di evento implementabile del progetto qui in carri armati, le modalità di gioco e gli eventi

14
00:01:08,640 --> 00:01:11,310
‫implementabili del progetto non possono essere privati.

15
00:01:11,310 --> 00:01:14,220
‫Quindi lo aggiungerò alla sezione protetta.

16
00:01:14,220 --> 00:01:19,080
‫Ora farò di questa una funzione nulla e chiamerò semplicemente questo gioco di inizio.

17
00:01:19,080 --> 00:01:25,380
‫Ora, per renderlo un evento implementabile del progetto, devo assegnargli una macro della funzione U con la

18
00:01:25,380 --> 00:01:26,160
‫funzione U.

19
00:01:26,160 --> 00:01:30,570
‫Specificare l'evento implementabile del progetto.

20
00:01:30,690 --> 00:01:36,390
‫Ora, una volta contrassegnato questo evento implementabile del progetto, non è nemmeno necessario assegnargli un corpo di

21
00:01:36,390 --> 00:01:37,800
‫funzione qui in C++.

22
00:01:37,800 --> 00:01:43,680
‫Unreal Engine si aspetta che implementiamo la funzionalità per questo nei progetti, ma possiamo chiamarla

23
00:01:43,680 --> 00:01:49,110
‫da C++ ed è esattamente quello che faremo qui in Handle Game Start.

24
00:01:49,110 --> 00:01:55,260
‫Quindi, subito dopo aver impostato il tank e le variabili del controller del giocatore, chiamerò start game

25
00:01:56,070 --> 00:01:57,840
‫e ora possiamo compilarlo.

26
00:01:57,840 --> 00:02:04,170
‫E tornando qui nell'editor, aprirò la modalità di gioco dei carri armati BP ed è qui che

27
00:02:04,170 --> 00:02:05,700
‫possiamo implementare la funzione.

28
00:02:05,700 --> 00:02:13,380
‫Quindi, se facciamo clic con il pulsante destro del mouse e scriviamo start game, ecco l'evento start game che è stato creato non

29
00:02:13,380 --> 00:02:19,980
‫appena abbiamo dichiarato la funzione e gli abbiamo assegnato la macro della funzione con l'evento implementabile del progetto.

30
00:02:19,980 --> 00:02:26,580
‫Quindi, sul lato C++, chiamiamo questo e nei progetti questo evento sta rispondendo ad esso.

31
00:02:26,610 --> 00:02:33,390
‫Possiamo testarlo con un semplice nodo di stringa di stampa e per la stringa possiamo dire Avvia gioco.

32
00:02:33,600 --> 00:02:37,650
‫Ora, se premiamo play, vedrò l'inizio del gioco in alto a sinistra.

33
00:02:37,650 --> 00:02:41,370
‫Quindi sappiamo che il nostro evento implementabile del progetto sta funzionando.

34
00:02:41,370 --> 00:02:49,530
‫Ora, quello che vorremmo che questo evento facesse è mostrare un widget che contiene del testo che informa il giocatore che il gioco sta

35
00:02:49,530 --> 00:02:53,880
‫per iniziare, il che significa che dobbiamo creare un widget da mostrare.

36
00:02:53,880 --> 00:03:00,960
‫Quindi creerò una nuova cartella nella cartella dei progetti e chiamerò questi widget e farò doppio

37
00:03:00,960 --> 00:03:02,370
‫clic sui widget.

38
00:03:02,370 --> 00:03:05,730
‫Ed è qui che creerò un nuovo progetto di widget.

39
00:03:05,940 --> 00:03:11,010
‫Ora, se faccio clic con il pulsante destro del mouse e vado all'interfaccia utente, ecco Widget Blueprint.

40
00:03:11,040 --> 00:03:17,520
‫Ora, se faccio clic su questo, creerò un nuovo progetto di widget e chiamerò questo W BP

41
00:03:17,520 --> 00:03:21,540
‫per Widget Blueprint, sottolineando il widget di inizio del gioco.

42
00:03:21,960 --> 00:03:27,240
‫E se faccio doppio clic su questo, aprirò l'editor Widget Blueprint e vedrai che

43
00:03:27,240 --> 00:03:31,560
‫sembra un po' diverso dall'editor Blueprint che siamo abituati a vedere.

44
00:03:31,560 --> 00:03:33,840
‫E questo perché questo è per un widget.

45
00:03:33,840 --> 00:03:37,860
‫I widget sono utili per visualizzare cose sullo schermo come il testo.

46
00:03:37,890 --> 00:03:43,590
‫Ora c'è molto qui e creeremo solo un widget molto semplice che mostra il testo.

47
00:03:43,620 --> 00:03:50,310
‫Esistono diversi tipi di elementi che possiamo aggiungere a un progetto di widget come bordi, pulsanti,

48
00:03:50,310 --> 00:03:53,580
‫caselle di controllo, immagini e così via.

49
00:03:53,580 --> 00:03:58,140
‫Ma quello che ci interessa è questo qui che dice Testo.

50
00:03:58,140 --> 00:04:05,280
‫Ora guarda in basso qui nel pannello della gerarchia, vedrai che abbiamo il widget generale di avvio del gioco WB

51
00:04:05,280 --> 00:04:06,180
‫in alto.

52
00:04:06,180 --> 00:04:10,500
‫E se facciamo clic su quello, possiamo modificare le proprietà di questo widget.

53
00:04:10,530 --> 00:04:14,040
‫Ora possiamo trascinare gli elementi del widget su questa gerarchia.

54
00:04:14,040 --> 00:04:20,070
‫Quindi cercherò nella tavolozza il pannello della tela e lo trascinerò nella mia gerarchia.

55
00:04:21,590 --> 00:04:28,880
‫Ora un pannello canvas ci consente di posizionare gli elementi del widget e impostarli nella posizione desiderata sullo schermo in

56
00:04:28,880 --> 00:04:33,020
‫modo da poter trascinare un elemento di testo direttamente sul grafico.

57
00:04:33,020 --> 00:04:37,910
‫E vedrai nella gerarchia questo nuovo elemento sotto il pannello della tela.

58
00:04:37,910 --> 00:04:39,360
‫E dice, Testo.

59
00:04:39,360 --> 00:04:40,310
‫Blocco di testo.

60
00:04:40,310 --> 00:04:47,450
‫Ora, questo blocco di testo tra virgolette è il testo che viene impostato automaticamente per questo widget di testo.

61
00:04:47,450 --> 00:04:54,740
‫E qui nel pannello dei dettagli, con questo widget di testo selezionato sotto contenuto, vediamo una proprietà di testo ed

62
00:04:54,740 --> 00:04:57,170
‫è impostata su blocco di testo.

63
00:04:57,170 --> 00:05:00,860
‫Ma possiamo impostarlo su qualsiasi testo desideriamo, ad esempio Preparati.

64
00:05:01,250 --> 00:05:06,620
‫Ora, dopo aver impostato questo per prepararsi, vedrai che il testo qui sullo schermo dice: Preparati.

65
00:05:06,710 --> 00:05:13,940
‫Quindi l'editor Widget Blueprint ci consente di personalizzare l'avviso dei widget in alto a sinistra dello

66
00:05:13,940 --> 00:05:17,810
‫schermo, questo medaglione qui, questo è chiamato un'ancora.

67
00:05:17,840 --> 00:05:22,100
‫Il nostro widget di testo è posizionato sullo schermo rispetto all'ancora.

68
00:05:22,100 --> 00:05:27,560
‫Quindi, se le dimensioni dello schermo cambiano, la distanza da quell'ancora rimarrà costante.

69
00:05:27,560 --> 00:05:29,990
‫E possiamo cambiare l'ancora se vogliamo.

70
00:05:30,020 --> 00:05:35,690
‫Ad esempio, possiamo impostare il nostro widget di testo relativo a un'ancora al centro dello schermo andando

71
00:05:35,690 --> 00:05:39,470
‫al pannello dei dettagli e sotto lo slot vediamo le ancore.

72
00:05:39,470 --> 00:05:45,500
‫E se faccio clic sul menu a discesa, posso selezionare questa icona che ha un quadrato nel mezzo.

73
00:05:45,500 --> 00:05:51,080
‫Se lo seleziono ora, l'ancora è al centro dello schermo e se voglio che il mio widget

74
00:05:51,080 --> 00:05:58,430
‫sia completamente centrato, posso cambiarne la posizione X e Y qui sotto la categoria dello slot in modo da poterlo impostare su zero

75
00:05:58,430 --> 00:06:05,540
‫per la posizione X e zero per la posizione Y e scorrendo con la rotellina del mouse per ingrandire, vedrai che è nell'angolo

76
00:06:05,540 --> 00:06:08,510
‫in alto a sinistra come al centro dello schermo.

77
00:06:08,510 --> 00:06:17,180
‫Ora questo campo di allineamento qui può permetterci di centrarlo perfettamente scegliendo valori di 0. 54 X e 0. 54 Y, e ora

78
00:06:17,180 --> 00:06:21,350
‫è completamente centrato al centro dello schermo.

79
00:06:21,440 --> 00:06:27,770
‫Ora, per iniziare un widget di gioco, probabilmente sarà appropriato mettere questo testo un po' più in

80
00:06:27,770 --> 00:06:28,250
‫alto.

81
00:06:28,250 --> 00:06:35,840
‫Quindi per Posizione Y, posso fare clic e trascinarlo a sinistra, il che renderà il valore Y della posizione negativo

82
00:06:35,840 --> 00:06:40,250
‫nell'editor del progetto del widget l'asse y punta verso il basso.

83
00:06:40,250 --> 00:06:46,250
‫Quindi, se vogliamo aumentare il nostro widget di testo, renderemo quella posizione y un valore inferiore.

84
00:06:46,250 --> 00:06:49,130
‫Lo metterò qui a circa -300.

85
00:06:49,130 --> 00:06:55,460
‫Ora giù nella categoria aspetto, posso cambiare un certo numero di proprietà per questo testo.

86
00:06:55,460 --> 00:07:01,730
‫Se faccio clic sul menu a discesa per il carattere, posso modificare la dimensione del carattere per dire qualcosa come 42.

87
00:07:01,730 --> 00:07:04,070
‫Ora per il carattere tipografico invece del grassetto.

88
00:07:04,070 --> 00:07:06,140
‫Mi piace il carattere tipografico normale.

89
00:07:06,140 --> 00:07:07,970
‫Penso che ora stia un po' meglio.

90
00:07:07,970 --> 00:07:14,300
‫Nota che il testo del nostro widget di testo è più grande del rettangolo verde qui, ma possiamo ridimensionare questo

91
00:07:14,300 --> 00:07:15,230
‫rettangolo verde.

92
00:07:15,230 --> 00:07:22,010
‫E mentre sto cambiando il rettangolo, vedrai qui nel pannello dei dettagli che la dimensione X e la dimensione y

93
00:07:22,010 --> 00:07:22,880
‫stanno cambiando.

94
00:07:22,880 --> 00:07:26,270
‫Ora, nota che la posizione X si è leggermente spostata da quando l'ho cambiata.

95
00:07:26,270 --> 00:07:32,180
‫Posso rimetterlo a zero e poiché l'allineamento per x è 0. 5, è perfettamente centrato.

96
00:07:32,180 --> 00:07:35,540
‫Quindi ora ho un widget che dice Preparati.

97
00:07:35,570 --> 00:07:40,400
‫L'unica cosa che resta da fare è aggiungerlo al viewport in modo da poterlo vedere sullo schermo.

98
00:07:40,400 --> 00:07:46,370
‫Noterai che se premo play e inizio a giocare, non vedo quel widget sullo schermo.

99
00:07:46,370 --> 00:07:51,530
‫Questo perché dobbiamo aggiungerlo attivamente allo schermo, ed è per questo che abbiamo creato questo evento

100
00:07:51,530 --> 00:07:56,960
‫implementabile del progetto nella modalità di gioco in modo da poter aggiungere questo widget allo schermo qui.

101
00:07:56,960 --> 00:07:59,090
‫Quindi parliamo di come farlo.

102
00:07:59,420 --> 00:07:59,840
‫Adesso.

103
00:07:59,840 --> 00:08:05,930
‫Il modo per creare un widget dai blueprint è utilizzare un nodo di creazione widget.

104
00:08:05,960 --> 00:08:11,870
‫È possibile fare clic con il pulsante destro del mouse nel grafico degli eventi per qualsiasi progetto e iniziare a digitare il nome di

105
00:08:11,870 --> 00:08:13,760
‫un nodo, quindi selezionare quel particolare nodo.

106
00:08:13,790 --> 00:08:16,040
‫Il nodo di cui abbiamo bisogno è creare widget.

107
00:08:16,040 --> 00:08:20,990
‫Ora vedrai che dice Crea Coolness Widget.

108
00:08:20,990 --> 00:08:27,020
‫E questo perché non appena ho aggiunto il nodo Crea widget, ho selezionato la classe Widget Blueprint qui

109
00:08:27,020 --> 00:08:29,150
‫nel menu a discesa della classe.

110
00:08:29,150 --> 00:08:34,340
‫Ciò è necessario affinché Unreal Engine sappia quale classe di widget creare.

111
00:08:34,370 --> 00:08:40,880
‫Ora, dopo aver utilizzato un nodo di creazione widget, utilizziamo un nodo Aggiungi al riquadro di visualizzazione per aggiungere effettivamente questo

112
00:08:40,880 --> 00:08:45,290
‫widget al riquadro di visualizzazione e quindi possiamo vederlo sullo schermo nel gioco.

113
00:08:45,320 --> 00:08:52,700
‫Si noti che i cavi di esecuzione sono collegati e anche che il nodo di creazione widget restituisce questo output

114
00:08:52,700 --> 00:08:59,300
‫blu e questo dovrebbe essere collegato all'input di destinazione in add to viewport poiché aggiungi a viewport

115
00:08:59,300 --> 00:09:06,290
‫deve sapere quale widget aggiungere al viewport e il nodo di creazione widget restituisce il valore di quel widget.

116
00:09:06,290 --> 00:09:11,570
‫Quindi ora che sai come creare un widget nei progetti, entrerai nella classe della modalità di gioco dei

117
00:09:11,570 --> 00:09:14,960
‫carri armati BP e utilizzerai un nodo di creazione widget.

118
00:09:14,990 --> 00:09:20,390
‫Lo collegherai dal nostro cavo di esecuzione dell'evento implementabile del progetto il.

119
00:09:20,500 --> 00:09:21,910
‫Abbiamo chiamato Start Game.

120
00:09:21,910 --> 00:09:29,800
‫Ora nel nodo Crea widget, dobbiamo selezionare la classe del widget da creare, quindi seleziona WB inizia il widget di gioco, quel

121
00:09:29,800 --> 00:09:36,700
‫nuovo progetto del widget che abbiamo appena creato e quindi usa un nodo Aggiungi al viewport per aggiungere effettivamente questo

122
00:09:36,700 --> 00:09:40,960
‫nuovo widget al viewport e aggancia su i cavi di esecuzione.

123
00:09:40,960 --> 00:09:47,560
‫E non dimenticare di collegare il valore restituito da create widget all'input di destinazione in add to viewport.

124
00:09:47,560 --> 00:09:52,900
‫Quindi metti in pausa il video e aggiungi questi nodi al progetto della modalità di gioco del carro armato ora.

125
00:09:56,670 --> 00:10:03,090
‫Quindi sono qui nella melodia Tanks Game Mode Blueprint e farò clic con il pulsante destro del mouse e digiterò

126
00:10:03,090 --> 00:10:05,700
‫crea widget e sceglierò Crea nodo widget.

127
00:10:05,730 --> 00:10:07,830
‫Ora nota che dice Costruisci nessuno.

128
00:10:07,830 --> 00:10:12,930
‫E questo perché lo dirà fino a quando non selezioniamo la classe di widget appropriata nel menu a discesa

129
00:10:12,930 --> 00:10:13,600
‫della classe.

130
00:10:13,620 --> 00:10:18,210
‫Ma prima di farlo, collegherò il cavo di esecuzione dall'inizio del gioco degli eventi.

131
00:10:18,210 --> 00:10:24,720
‫Quindi otteniamo effettivamente questa funzionalità eseguita non appena il nostro gioco di avvio dell'evento implementabile del progetto

132
00:10:24,720 --> 00:10:26,700
‫viene chiamato da C++.

133
00:10:26,970 --> 00:10:34,830
‫Ora per il menu a discesa della classe, selezionerò WP Start Game Widget e ora il titolo del nodo

134
00:10:34,830 --> 00:10:38,700
‫cambia per dire Crea WP Start Game Widget Widget.

135
00:10:38,820 --> 00:10:41,880
‫Quindi ora possiamo vedere che questo è un nodo di creazione widget.

136
00:10:41,910 --> 00:10:48,660
‫Ora farò clic sul filo di esecuzione e trascinerò fuori, quindi digiterò aggiungi alla finestra.

137
00:10:48,660 --> 00:10:54,720
‫E quindi se seleziono aggiungi a viewport, i cavi di esecuzione vengono automaticamente collegati per

138
00:10:54,720 --> 00:11:01,410
‫me, ma non collega il valore restituito da create widget all'input di destinazione per l'aggiunta a viewport.

139
00:11:01,410 --> 00:11:04,070
‫Quindi ho bisogno di fare clic e trascinarlo da solo.

140
00:11:04,080 --> 00:11:10,920
‫Quindi ora, quando Start Game viene chiamato da C++ e dalla classe della modalità di gioco, eseguiremo questa

141
00:11:10,920 --> 00:11:18,330
‫logica del progetto che risulterà nella creazione di un nuovo widget basato sul widget WP Start Game e quindi lo

142
00:11:18,330 --> 00:11:19,500
‫aggiungeremo al viewport.

143
00:11:19,500 --> 00:11:23,220
‫Quindi farò clic su Riproduci e c'è il widget Preparati.

144
00:11:23,400 --> 00:11:29,550
‫Ora abbiamo detto che questo mostrerà un timer per il conto alla rovescia, ma non abbiamo ancora

145
00:11:29,550 --> 00:11:32,220
‫implementato quella funzionalità, quindi arriverà presto.

146
00:11:32,490 --> 00:11:39,090
‫Quindi, in sintesi, abbiamo creato il progetto Start Game Widget e per ora contiene solo del testo che

147
00:11:39,090 --> 00:11:39,930
‫dice Preparati.

148
00:11:40,260 --> 00:11:46,740
‫Abbiamo anche utilizzato un nodo di creazione widget e un nodo di aggiunta al viewport per aggiungere questo widget al viewport in modo da

149
00:11:46,740 --> 00:11:48,990
‫poterlo vedere non appena il gioco inizia.

150
00:11:48,990 --> 00:11:55,620
‫E abbiamo avviato questa funzionalità utilizzando il nostro evento implementabile del progetto che abbiamo creato nella classe C++ in

151
00:11:55,620 --> 00:12:02,460
‫modalità gioco chiamata Avvia gioco nei video a venire, cambieremo il testo in questo widget in fase di esecuzione in

152
00:12:02,460 --> 00:12:09,270
‫modo che mostri quanto tempo è rimasto su quel timer di inizio partita in modo che il giocatore sappia

153
00:12:09,270 --> 00:12:13,140
‫quanto tempo aspettare prima di poter iniziare effettivamente a giocare.

154
00:12:13,860 --> 00:12:14,850
‫Ci vediamo presto.

