﻿1
00:00:04,370 --> 00:00:05,210
‫Ciao e Benvenuto.

2
00:00:05,210 --> 00:00:10,250
‫In questa lezione analizzeremo il concetto di variabili locali, variabili che esistono solo all'interno

3
00:00:10,250 --> 00:00:11,750
‫di una determinata funzione.

4
00:00:12,080 --> 00:00:19,970
‫E vedremo come possiamo usarlo per impostare la nostra posizione su un valore diverso da quello memorizzato

5
00:00:19,970 --> 00:00:21,380
‫nel mio vettore.

6
00:00:21,530 --> 00:00:22,190
‫Immergiamoci.

7
00:00:22,730 --> 00:00:28,340
‫Quindi, fino a questo punto, abbiamo avuto a che fare con variabili che appartengono a una classe.

8
00:00:28,580 --> 00:00:31,520
‫L'abbiamo fatto in Blueprint e ora in C++.

9
00:00:31,910 --> 00:00:37,130
‫E questo significa che la variabile è attiva per tutto il tempo dell'istanza della classe.

10
00:00:37,130 --> 00:00:43,190
‫Ogni istanza ottiene la propria copia di una variabile, ma mentre l'istanza della classe è attiva, la variabile è

11
00:00:43,190 --> 00:00:43,820
‫due.

12
00:00:44,030 --> 00:00:47,660
‫Ora, questo concetto di cui ho appena parlato ha in realtà un nome.

13
00:00:47,660 --> 00:00:48,830
‫Si chiama Ambito.

14
00:00:49,430 --> 00:00:52,640
‫Cosa significa quanto tempo vive la variabile?

15
00:00:52,640 --> 00:00:59,450
‫E ho appena descritto una variabile di istanza che è una variabile che vive quanto una particolare istanza di

16
00:00:59,450 --> 00:01:00,470
‫una classe.

17
00:01:00,950 --> 00:01:03,830
‫Ora ci sono anche altri tipi di variabili.

18
00:01:03,830 --> 00:01:07,430
‫Ci sono variabili che vivono quanto una funzione.

19
00:01:07,430 --> 00:01:13,160
‫Fondamentalmente quando chiami una particolare funzione, quella funzione viene eseguita e non appena la funzione

20
00:01:13,160 --> 00:01:14,720
‫termina, la variabile muore.

21
00:01:15,200 --> 00:01:23,660
‫Quindi in C++, in generale, una variabile è valida tra le parentesi graffe nella sintassi.

22
00:01:23,660 --> 00:01:25,470
‫Quindi è una buona regola pratica.

23
00:01:25,470 --> 00:01:31,460
‫Non è sempre esattamente corretto, ma la funzione tick, ad esempio, qui abbiamo

24
00:01:31,460 --> 00:01:39,710
‫delle parentesi graffe e se dovessimo dichiarare una variabile all'interno di questa funzione tick, allora esisterebbe solo per una volta.

25
00:01:39,710 --> 00:01:43,820
‫La funzione tick viene chiamata e la volta successiva verrebbe creata di nuovo.

26
00:01:44,480 --> 00:01:45,950
‫La piattaforma mobile.

27
00:01:45,980 --> 00:01:52,130
‫Se possiamo vederlo, se diamo un'occhiata alla piattaforma mobile punto h, puoi vedere che il mio vettore

28
00:01:52,130 --> 00:01:59,540
‫viene dichiarato all'interno di alcune parentesi graffe che appartengono alla definizione della classe, motivo per cui queste variabili vivono finché

29
00:01:59,540 --> 00:02:02,210
‫un l'istanza della classe lo fa.

30
00:02:02,420 --> 00:02:04,580
‫Quindi vorrei dimostrartelo.

31
00:02:04,580 --> 00:02:11,060
‫Quindi entriamo nel punto CP della piattaforma mobile e creiamo una variabile locale all'interno di questo.

32
00:02:11,240 --> 00:02:14,870
‫Quindi lo creerò esattamente nello stesso modo in cui lo abbiamo fatto.

33
00:02:15,110 --> 00:02:20,840
‫Quando dichiariamo un errore nell'intestazione del file, avremo un vettore F, quindi il nome del

34
00:02:20,840 --> 00:02:22,850
‫vettore, lo chiamerò vettore locale.

35
00:02:23,810 --> 00:02:27,920
‫E poi possiamo impostare questo valore proprio quando lo creiamo.

36
00:02:28,190 --> 00:02:32,810
‫Possiamo farlo usando il costruttore per F vettore, oppure possiamo farlo da un'altra variabile, proprio

37
00:02:32,930 --> 00:02:35,510
‫come possiamo passare una variabile in una funzione.

38
00:02:35,510 --> 00:02:38,810
‫Quindi possiamo prima di tutto usare solo il metodo del costruttore.

39
00:02:38,810 --> 00:02:45,410
‫Quindi avremo F vettore e gli darò da 1 a 3 e poi un punto e virgola, la fine della

40
00:02:45,410 --> 00:02:46,010
‫linea.

41
00:02:46,010 --> 00:02:48,160
‫Quindi ora è una variabile locale.

42
00:02:48,170 --> 00:02:54,830
‫Esiste solo all'interno di questa funzione e viene ripristinato ogni volta che viene chiamata la funzione.

43
00:02:55,190 --> 00:03:01,190
‫Quindi, se dovessi fare qualcosa del genere, se dovessi fare qualcosa come abbiamo sulla

44
00:03:01,190 --> 00:03:09,350
‫riga 29 con il mio vettore aggiornato, possiamo avere un vettore locale, possiamo avere un vettore locale punto z uguale

45
00:03:09,350 --> 00:03:12,470
‫al vettore locale punto z più uno.

46
00:03:13,040 --> 00:03:22,010
‫E se dovessi impostare la mia posizione su quel vettore locale, sarà lo stesso ogni singolo fotogramma

47
00:03:22,010 --> 00:03:26,180
‫perché resettiamo e partiamo dalla stessa posizione.

48
00:03:26,180 --> 00:03:28,880
‫Uno, due, tre, ogni singola funzione tick.

49
00:03:28,880 --> 00:03:31,520
‫Quindi questa funzione esiste davvero solo localmente.

50
00:03:31,670 --> 00:03:38,810
‫Quindi mi piacerebbe che tu provassi un piccolo esperimento come sfida per impostare il vettore locale dal mio vettore.

51
00:03:38,810 --> 00:03:43,550
‫Quindi in pratica lo farai piuttosto che impostarlo dal costruttore, lo imposterai dal

52
00:03:43,550 --> 00:03:49,460
‫valore che è attualmente nel mio vettore che prenderà una copia di quel vettore nel tuo vettore

53
00:03:49,460 --> 00:03:49,940
‫locale.

54
00:03:50,570 --> 00:03:54,320
‫Quindi vorrei che tu impostassi una posizione usando il vettore locale.

55
00:03:54,650 --> 00:04:00,350
‫E poiché stiamo cercando di aggiornare quel vettore locale ogni fotogramma, vediamo qual è l'effetto.

56
00:04:00,350 --> 00:04:01,580
‫La piattaforma si muove?

57
00:04:01,580 --> 00:04:07,850
‫Ti aspetteresti che lo facesse e provalo, compila la riproduzione del codice e vedi se effettivamente pubblica video

58
00:04:07,850 --> 00:04:08,870
‫e prova.

59
00:04:11,950 --> 00:04:12,580
‫Bene.

60
00:04:12,580 --> 00:04:13,570
‫Ben tornato.

61
00:04:13,600 --> 00:04:19,480
‫Quindi invece di usare il costruttore qui per impostare il vettore locale, imposterò invece

62
00:04:19,510 --> 00:04:20,920
‫il mio vettore.

63
00:04:21,220 --> 00:04:28,330
‫Quindi prendiamo il valore che è attualmente memorizzato nel mio vettore e lo inseriamo nel

64
00:04:28,900 --> 00:04:32,800
‫vettore locale e quindi aggiorniamo il vettore locale.

65
00:04:32,800 --> 00:04:36,520
‫Stiamo aumentando, detto questo, di uno ogni singolo fotogramma.

66
00:04:36,850 --> 00:04:40,930
‫E poi vorrei impostare la posizione attiva invece che dal mio vettore.

67
00:04:40,930 --> 00:04:44,770
‫Lo imposteremo invece dal vettore locale.

68
00:04:45,580 --> 00:04:48,880
‫Ora, cosa accadrà in questo caso, secondo te?

69
00:04:48,910 --> 00:04:50,980
‫Andiamo avanti e scopriamolo.

70
00:04:50,980 --> 00:04:56,590
‫Premerò il pulsante di compilazione e andrò avanti e premetterò play e vedrò

71
00:04:56,590 --> 00:05:03,100
‫che la piattaforma si sta ancora spostando a destra, ma non sta salendo nella direzione Z.

72
00:05:03,100 --> 00:05:09,460
‫Quindi puoi vedere che questo non ha davvero un impatto, l'aumento del vettore locale perché

73
00:05:09,760 --> 00:05:14,380
‫viene ripristinato dal valore corrente nel mio vettore, ogni fotogramma.

74
00:05:14,830 --> 00:05:17,320
‫Il mio vettore, tuttavia, è ancora in fase di aggiornamento.

75
00:05:17,320 --> 00:05:19,780
‫Ogni fotogramma viene aumentato il valore y, ogni fotogramma.

76
00:05:19,780 --> 00:05:22,630
‫Ed è per questo che stiamo vedendo il movimento a destra.

77
00:05:22,900 --> 00:05:31,540
‫Quindi un modo in cui possiamo vedere che questa modifica al vettore locale è solo locale è aumentare questo valore da

78
00:05:31,540 --> 00:05:33,610
‫uno a forse 100.

79
00:05:33,820 --> 00:05:38,350
‫Quindi stiamo aggiungendo 100 al valore del vettore locale.

80
00:05:38,800 --> 00:05:42,280
‫Possiamo andare oltre e compilare e quindi premere play.

81
00:05:42,850 --> 00:05:47,680
‫E quello che vedrai è che la piattaforma è in realtà 100 unità più in alto nell'aria.

82
00:05:47,680 --> 00:05:55,600
‫Prendiamoci un secondo qui ed espelliamo con F8 e mettiamo in pausa il gioco con il pulsante di pausa nella barra

83
00:05:55,600 --> 00:06:01,750
‫degli strumenti principale, quindi selezioniamo una piattaforma mobile per darle un'occhiata nel riquadro dei dettagli.

84
00:06:01,750 --> 00:06:06,340
‫Per farlo, devo effettivamente fare clic su di esso nella finestra per qualche motivo a volte non funziona semplicemente facendo clic

85
00:06:06,340 --> 00:06:07,510
‫su di esso nella struttura.

86
00:06:07,510 --> 00:06:17,380
‫M E vorrei sottolineare che il valore nel mio vettore, il valore Z nel mio vettore è 100 unità

87
00:06:17,380 --> 00:06:21,790
‫in meno rispetto alla posizione Z della trasformazione.

88
00:06:22,090 --> 00:06:26,970
‫Quindi puoi vedere che l'aggiunta a quel vettore locale ha avuto un impatto.

89
00:06:26,980 --> 00:06:34,120
‫Abbiamo la nostra posizione 100 unità in più rispetto alla posizione nel mio vettore.

90
00:06:34,150 --> 00:06:39,280
‫E la cosa davvero fantastica delle variabili locali è che quando la funzione ha terminato la sua

91
00:06:39,280 --> 00:06:41,440
‫particolare esecuzione, vengono cancellate e ripristinate.

92
00:06:41,440 --> 00:06:44,230
‫Quindi puoi sempre sapere cosa aspettarti con la variabile locale.

93
00:06:44,500 --> 00:06:50,650
‫Sai sempre quale valore ci sarà, a differenza di una variabile di classe che può essere aggiornata in qualsiasi

94
00:06:50,710 --> 00:06:52,660
‫momento da qualsiasi altra funzione.

95
00:06:52,720 --> 00:06:57,160
‫Quindi metteremo alla prova queste variabili locali tra poche lezioni.

96
00:06:57,160 --> 00:06:58,360
‫Continuiamo.

