﻿1
00:00:04,430 --> 00:00:05,660
‫Ciao e Benvenuto.

2
00:00:05,660 --> 00:00:11,810
‫In questa lezione, esamineremo i vettori e in generale le cose più complicate come

3
00:00:11,810 --> 00:00:19,610
‫le strutture in C++ e come possiamo accedere alle singole parti sia per impostare che per ottenerle da una struttura.

4
00:00:19,790 --> 00:00:20,420
‫Immergiamoci.

5
00:00:21,320 --> 00:00:27,770
‫Quindi abbiamo imparato come gestire i tipi di dati di base in C++ e creare variabili e assegnarle e persino eseguire un po'

6
00:00:27,770 --> 00:00:29,630
‫di aritmetica di base con loro.

7
00:00:29,990 --> 00:00:35,330
‫Ma che dire se volessimo occuparci di tipi più complicati come vettori e trasformazioni?

8
00:00:35,930 --> 00:00:38,030
‫Bene, il processo è in realtà molto simile.

9
00:00:38,030 --> 00:00:41,600
‫Iniziamo cancellando parte del codice di test che abbiamo già.

10
00:00:41,600 --> 00:00:43,550
‫Cancellerò tutte le mie proprietà.

11
00:00:43,550 --> 00:00:46,460
‫Per me, questa è la riga 26 fino alla 51.

12
00:00:47,030 --> 00:00:54,290
‫E andrò anche nel file C++ ed eliminerò le righe da 19 a 23, che è dove sto facendo tutto il lavoro

13
00:00:54,290 --> 00:00:56,870
‫con quelle variabili che ho appena eliminato.

14
00:00:56,870 --> 00:01:01,550
‫Quindi ora Begin Play è completamente vuoto e siamo tornati essenzialmente al punto di partenza.

15
00:01:02,660 --> 00:01:06,290
‫Quindi ora quello che voglio fare è aggiungere una nuova proprietà.

16
00:01:06,290 --> 00:01:15,980
‫Quindi tutte le maiuscole vengono nuovamente modificate ovunque e darò a questo il tipo di vettore F nota la maiuscola F maiuscola, la V maiuscola

17
00:01:15,980 --> 00:01:22,250
‫ed è così che trattiamo i vettori con cui ci siamo occupati in Blueprint sono gli

18
00:01:22,250 --> 00:01:27,410
‫stessi vettori sotto il surface, ma è così che lo digitiamo in C++.

19
00:01:27,410 --> 00:01:33,680
‫La F che la precede ci fa semplicemente sapere che questa è una struct allo stesso modo della A che precede

20
00:01:33,680 --> 00:01:34,580
‫la piattaforma mobile.

21
00:01:34,580 --> 00:01:36,800
‫Facci sapere che è un attore.

22
00:01:37,040 --> 00:01:38,360
‫Non è una cosa C++.

23
00:01:38,360 --> 00:01:43,970
‫Questa è una convenzione di denominazione irreale per nominare le diverse classi, strutture e tipi.

24
00:01:44,720 --> 00:01:47,240
‫Quindi quello che faremo è dare a questa variabile il loro nome.

25
00:01:47,240 --> 00:01:50,840
‫E funziona esattamente come se fosse un float o un evento.

26
00:01:51,170 --> 00:01:53,540
‫Possiamo chiamarlo il mio galleggiante, per esempio.

27
00:01:53,540 --> 00:01:54,770
‫Non deve avere spazi.

28
00:01:55,280 --> 00:01:59,060
‫E se dovessimo mettere punto e virgola alla fine della riga qui, allora è tutto.

29
00:01:59,060 --> 00:02:06,110
‫Abbiamo dichiarato una nuova variabile che sarà visibile nel nostro riquadro dei dettagli nell'editor, ma non è abbastanza

30
00:02:06,110 --> 00:02:07,040
‫per me.

31
00:02:07,040 --> 00:02:13,760
‫Vorrei effettivamente dare a questo un valore predefinito diverso da quello predefinito 000.

32
00:02:14,150 --> 00:02:17,630
‫Per farlo, dobbiamo aggiornare il nostro glossario con un nuovo termine.

33
00:02:17,630 --> 00:02:24,830
‫Abbiamo bisogno di un costruttore, che è essenzialmente qualcosa in C++ che crea una nuova struttura o un valore di classe A.

34
00:02:25,280 --> 00:02:33,050
‫Quindi, se dovessimo creare un costruttore per il vettore, il modo in cui funzionerebbe è che vogliamo assegnare un valore in

35
00:02:33,050 --> 00:02:34,640
‫modo da colpire uguale.

36
00:02:34,640 --> 00:02:40,520
‫E in genere quando abbiamo a che fare con numeri interi o float, potremmo semplicemente usare qualcosa come uno o un vero

37
00:02:40,520 --> 00:02:46,040
‫che sono stati incorporati in valori che ci hanno permesso di impostare il valore di quei tipi di base.

38
00:02:46,400 --> 00:02:53,090
‫Ma quando abbiamo tipi più elaborati come uno struct, dobbiamo usare il costruttore e il costruttore avrà

39
00:02:53,090 --> 00:02:59,120
‫sempre lo stesso nome del tipo di dati, quindi sarà vettoriale esattamente lo stesso.

40
00:02:59,450 --> 00:03:05,870
‫E poi apri delle parentesi e dentro le parentesi dai i valori che vuoi.

41
00:03:05,870 --> 00:03:08,570
‫Quindi X, Y e Z sono ciò che costituisce un vettore.

42
00:03:08,570 --> 00:03:14,990
‫Quindi potremmo avere uno, due e tre tutti separati da virgole, quindi chiudere le parentesi e mettere un punto e

43
00:03:14,990 --> 00:03:16,760
‫virgola alla fine della riga.

44
00:03:17,090 --> 00:03:23,420
‫E questo darà un valore predefinito di uno, due e tre in X, Y e Z per questo vettore.

45
00:03:23,420 --> 00:03:24,290
‫Proviamolo.

46
00:03:24,680 --> 00:03:27,200
‫Torna in Unreal e premi il pulsante di compilazione.

47
00:03:27,680 --> 00:03:34,520
‫E una volta completato con successo, possiamo assicurarci di aver selezionato il Moving Platform Act nella nostra struttura e dare

48
00:03:34,520 --> 00:03:40,010
‫un'occhiata al riquadro dei dettagli e vedere che in effetti abbiamo una nuova proprietà chiamata My

49
00:03:40,010 --> 00:03:40,700
‫Float.

50
00:03:40,700 --> 00:03:47,180
‫Gli altri sono stati tolti ei valori nelle sue diverse posizioni, X, Y e Z sono uno, due

51
00:03:47,180 --> 00:03:49,430
‫e tre proprio come ci aspettavamo.

52
00:03:50,180 --> 00:03:51,050
‫Quindi è fantastico.

53
00:03:51,200 --> 00:03:57,560
‫Ma se volessi impadronirmi di questi valori e inserirli magari in un'altra proprietà?

54
00:03:57,710 --> 00:04:04,010
‫Quindi, se dovessi avere un'altra proprietà contrassegnata come aggiunta ovunque in modo da poterla vedere nell'ispettore,

55
00:04:04,580 --> 00:04:12,860
‫ho digitato float chiamato my x e lo imposterò per impostazione predefinita a zero solo per poter vedere che lo stiamo cambiando.

56
00:04:13,730 --> 00:04:20,690
‫E quello che voglio fare è prendere il valore x dal mio float in inizio riproduzione e voglio impostarlo nella

57
00:04:20,690 --> 00:04:22,130
‫mia variabile x.

58
00:04:22,610 --> 00:04:30,320
‫Quindi andiamo al file C++ e iniziamo la riproduzione dopo la riga che dice super grande in gioco, imposteremo

59
00:04:30,320 --> 00:04:37,970
‫la mia X uguale a ciò che vogliamo ottenere qualcosa dal mio vettore, ma non vogliamo l'intero del mio

60
00:04:37,970 --> 00:04:38,570
‫vettore.

61
00:04:38,570 --> 00:04:39,800
‫Sarebbe un errore.

62
00:04:39,800 --> 00:04:44,570
‫Non possiamo impostare un vettore in un float, vogliamo solo la parte x di quel vettore.

63
00:04:45,050 --> 00:04:48,620
‫Bene, per capirlo, dobbiamo capire il concetto di operatore.

64
00:04:48,740 --> 00:04:53,030
‫Gli operatori sono simboli in C++ che fanno qualcosa.

65
00:04:53,030 --> 00:04:54,410
‫Ne abbiamo già visti alcuni.

66
00:04:54,650 --> 00:04:57,890
‫Abbiamo visto l'operatore più, che aggiunge due cose insieme.

67
00:04:57,890 --> 00:04:59,450
‫C'è anche un operatore meno.

68
00:04:59,450 --> 00:05:03,770
‫C'è l'operatore di uguaglianza, l'operatore di uguale, che assegna.

69
00:05:03,890 --> 00:05:04,270
‫Le cose.

70
00:05:04,270 --> 00:05:06,710
‫Quindi lo stiamo usando proprio qui sulla riga 19.

71
00:05:06,710 --> 00:05:11,750
‫Questo è un operatore che sta assegnando il valore del mio vettore alla mia X.

72
00:05:12,350 --> 00:05:18,620
‫E poi abbiamo un altro operatore, di cui abbiamo bisogno per sapere qual è l'operatore DOT.

73
00:05:18,980 --> 00:05:23,300
‫È un operatore che ottiene qualcosa da una struttura o una classe.

74
00:05:23,390 --> 00:05:27,200
‫Quindi vogliamo ottenere la X dall'interno del mio vettore.

75
00:05:27,200 --> 00:05:33,860
‫Quindi usiamo un operatore punto, facciamo punto x ora non usiamo uno spazio qui tra il mio vettore e x.

76
00:05:34,130 --> 00:05:40,400
‫Li lasciamo semplicemente funzionare insieme, così è così che in genere lasciamo le cose anche se non è necessariamente un

77
00:05:40,400 --> 00:05:41,930
‫errore inserire degli spazi.

78
00:05:42,350 --> 00:05:51,260
‫Quindi abbiamo il mio vettore punto x dovrebbe ottenere il valore x del vettore e inserirlo nel mio x float.

79
00:05:51,710 --> 00:05:57,470
‫Quindi mettiamo il punto e virgola alla fine della riga e come al solito sto ignorando gli scarabocchi rossi perché a volte

80
00:05:57,470 --> 00:06:00,290
‫richiedono molto tempo per l'aggiornamento ea volte non sono corretti.

81
00:06:00,770 --> 00:06:06,530
‫E poi entreremo nella codifica in tempo reale e premiamo il pulsante che ricompila e controlliamo solo

82
00:06:06,530 --> 00:06:08,300
‫se otteniamo un risultato positivo.

83
00:06:08,750 --> 00:06:11,060
‫E no, vedi, abbiamo un errore di compilazione.

84
00:06:11,060 --> 00:06:16,760
‫E se guardi l'errore che dice che il mio vettore è un identificatore non dichiarato ed è perché ho commesso un errore

85
00:06:16,760 --> 00:06:21,620
‫di battitura, ho chiamato il vettore F un mio float e probabilmente stai urlando ai tuoi schermi.

86
00:06:21,620 --> 00:06:26,150
‫Ma è bene mostrarti che anche gli esperti, i programmatori, commettono errori.

87
00:06:26,150 --> 00:06:30,710
‫Volevamo chiamarlo il mio vettore, quindi tornerò al file principale e lo

88
00:06:30,950 --> 00:06:35,540
‫rinominerò in mio vettore, il che dovrebbe rimuovere il problema nel mio cervello.

89
00:06:35,720 --> 00:06:38,660
‫Andiamo avanti e facciamo nuovamente clic sul pulsante di compilazione.

90
00:06:38,960 --> 00:06:44,130
‫E questo ti dà solo un assaggio di com'è quando commetti errori, ottieni un errore di compilazione.

91
00:06:44,130 --> 00:06:45,230
‫Succede tutto il tempo.

92
00:06:45,230 --> 00:06:48,230
‫In effetti, è molto raro non commettere errori.

93
00:06:48,230 --> 00:06:54,740
‫La prima volta che fai qualcosa, andiamo avanti e premiamo play e vedremo quale valore otteniamo nel

94
00:06:54,770 --> 00:06:56,270
‫riquadro dei dettagli.

95
00:06:56,270 --> 00:07:05,000
‫Ora puoi vedere che la mia x è stata impostata su uno perché quello era il valore nella componente x della variabile my

96
00:07:05,000 --> 00:07:05,720
‫vector.

97
00:07:06,170 --> 00:07:09,740
‫Quindi vorrei sfidarti a impostare un valore vettoriale.

98
00:07:09,740 --> 00:07:11,870
‫Abbiamo ottenuto valori dal vettore.

99
00:07:11,870 --> 00:07:13,010
‫Ora proviamo a impostarli.

100
00:07:13,010 --> 00:07:17,000
‫Fondamentalmente prova a usare l'operatore punto per impostare un valore.

101
00:07:17,420 --> 00:07:25,760
‫Prova a capovolgere i due lati di quello uguale in modo da avere invece la mia X a destra e il mio vettore

102
00:07:25,760 --> 00:07:26,840
‫a sinistra.

103
00:07:27,140 --> 00:07:30,260
‫E se cambiassi in Y o z?

104
00:07:30,500 --> 00:07:33,260
‫C'è qualche differenza che tira video e prova?

105
00:07:36,740 --> 00:07:37,390
‫Bene.

106
00:07:37,400 --> 00:07:37,900
‫Ben tornato.

107
00:07:37,910 --> 00:07:40,580
‫Quindi proverò a capovolgere questi due.

108
00:07:40,580 --> 00:07:44,930
‫Passiamo al C++ e iniziamo invece a giocare.

109
00:07:44,930 --> 00:07:52,730
‫Quello che sto per dire è che il mio vettore punto y è uguale alla mia x e quindi metti punto e virgola alla fine della linea.

110
00:07:52,970 --> 00:07:57,530
‫Ed è così che possiamo impostare i valori anche all'interno di una struttura.

111
00:07:57,920 --> 00:08:06,920
‫Quindi torniamo a Unreal e ricompiliamo e poi possiamo andare avanti e impostare un valore nella mia X.

112
00:08:06,920 --> 00:08:08,690
‫Metto qui il valore di cinque.

113
00:08:10,070 --> 00:08:15,410
‫Quindi andrò avanti e giocherò e darò un'occhiata al riquadro dei dettagli per la piattaforma mobile.

114
00:08:15,740 --> 00:08:24,320
‫E abbastanza sicuro, il valore y del mio vettore è stato aggiornato in inizio gioco dal valore nella mia x.

115
00:08:24,860 --> 00:08:26,000
‫Quindi congratulazioni.

116
00:08:26,000 --> 00:08:33,020
‫Abbiamo visto come usare tipi più complicati, i tipi composti come gli struct in C++.

117
00:08:33,020 --> 00:08:34,640
‫Ci vediamo alla prossima lezione.

