‫Ciao e Benvenuto.
‫In questa lezione analizzeremo il concetto di variabili locali, variabili che esistono solo all'interno
‫di una determinata funzione.
‫E vedremo come possiamo usarlo per impostare la nostra posizione su un valore diverso da quello memorizzato
‫nel mio vettore.
‫Immergiamoci.
‫Quindi, fino a questo punto, abbiamo avuto a che fare con variabili che appartengono a una classe.
‫L'abbiamo fatto in Blueprint e ora in C++.
‫E questo significa che la variabile è attiva per tutto il tempo dell'istanza della classe.
‫Ogni istanza ottiene la propria copia di una variabile, ma mentre l'istanza della classe è attiva, la variabile è
‫due.
‫Ora, questo concetto di cui ho appena parlato ha in realtà un nome.
‫Si chiama Ambito.
‫Cosa significa quanto tempo vive la variabile?
‫E ho appena descritto una variabile di istanza che è una variabile che vive quanto una particolare istanza di
‫una classe.
‫Ora ci sono anche altri tipi di variabili.
‫Ci sono variabili che vivono quanto una funzione.
‫Fondamentalmente quando chiami una particolare funzione, quella funzione viene eseguita e non appena la funzione
‫termina, la variabile muore.
‫Quindi in C++, in generale, una variabile è valida tra le parentesi graffe nella sintassi.
‫Quindi è una buona regola pratica.
‫Non è sempre esattamente corretto, ma la funzione tick, ad esempio, qui abbiamo
‫delle parentesi graffe e se dovessimo dichiarare una variabile all'interno di questa funzione tick, allora esisterebbe solo per una volta.
‫La funzione tick viene chiamata e la volta successiva verrebbe creata di nuovo.
‫La piattaforma mobile.
‫Se possiamo vederlo, se diamo un'occhiata alla piattaforma mobile punto h, puoi vedere che il mio vettore
‫viene dichiarato all'interno di alcune parentesi graffe che appartengono alla definizione della classe, motivo per cui queste variabili vivono finché
‫un l'istanza della classe lo fa.
‫Quindi vorrei dimostrartelo.
‫Quindi entriamo nel punto CP della piattaforma mobile e creiamo una variabile locale all'interno di questo.
‫Quindi lo creerò esattamente nello stesso modo in cui lo abbiamo fatto.
‫Quando dichiariamo un errore nell'intestazione del file, avremo un vettore F, quindi il nome del
‫vettore, lo chiamerò vettore locale.
‫E poi possiamo impostare questo valore proprio quando lo creiamo.
‫Possiamo farlo usando il costruttore per F vettore, oppure possiamo farlo da un'altra variabile, proprio
‫come possiamo passare una variabile in una funzione.
‫Quindi possiamo prima di tutto usare solo il metodo del costruttore.
‫Quindi avremo F vettore e gli darò da 1 a 3 e poi un punto e virgola, la fine della
‫linea.
‫Quindi ora è una variabile locale.
‫Esiste solo all'interno di questa funzione e viene ripristinato ogni volta che viene chiamata la funzione.
‫Quindi, se dovessi fare qualcosa del genere, se dovessi fare qualcosa come abbiamo sulla
‫riga 29 con il mio vettore aggiornato, possiamo avere un vettore locale, possiamo avere un vettore locale punto z uguale
‫al vettore locale punto z più uno.
‫E se dovessi impostare la mia posizione su quel vettore locale, sarà lo stesso ogni singolo fotogramma
‫perché resettiamo e partiamo dalla stessa posizione.
‫Uno, due, tre, ogni singola funzione tick.
‫Quindi questa funzione esiste davvero solo localmente.
‫Quindi mi piacerebbe che tu provassi un piccolo esperimento come sfida per impostare il vettore locale dal mio vettore.
‫Quindi in pratica lo farai piuttosto che impostarlo dal costruttore, lo imposterai dal
‫valore che è attualmente nel mio vettore che prenderà una copia di quel vettore nel tuo vettore
‫locale.
‫Quindi vorrei che tu impostassi una posizione usando il vettore locale.
‫E poiché stiamo cercando di aggiornare quel vettore locale ogni fotogramma, vediamo qual è l'effetto.
‫La piattaforma si muove?
‫Ti aspetteresti che lo facesse e provalo, compila la riproduzione del codice e vedi se effettivamente pubblica video
‫e prova.
‫Bene.
‫Ben tornato.
‫Quindi invece di usare il costruttore qui per impostare il vettore locale, imposterò invece
‫il mio vettore.
‫Quindi prendiamo il valore che è attualmente memorizzato nel mio vettore e lo inseriamo nel
‫vettore locale e quindi aggiorniamo il vettore locale.
‫Stiamo aumentando, detto questo, di uno ogni singolo fotogramma.
‫E poi vorrei impostare la posizione attiva invece che dal mio vettore.
‫Lo imposteremo invece dal vettore locale.
‫Ora, cosa accadrà in questo caso, secondo te?
‫Andiamo avanti e scopriamolo.
‫Premerò il pulsante di compilazione e andrò avanti e premetterò play e vedrò
‫che la piattaforma si sta ancora spostando a destra, ma non sta salendo nella direzione Z.
‫Quindi puoi vedere che questo non ha davvero un impatto, l'aumento del vettore locale perché
‫viene ripristinato dal valore corrente nel mio vettore, ogni fotogramma.
‫Il mio vettore, tuttavia, è ancora in fase di aggiornamento.
‫Ogni fotogramma viene aumentato il valore y, ogni fotogramma.
‫Ed è per questo che stiamo vedendo il movimento a destra.
‫Quindi un modo in cui possiamo vedere che questa modifica al vettore locale è solo locale è aumentare questo valore da
‫uno a forse 100.
‫Quindi stiamo aggiungendo 100 al valore del vettore locale.
‫Possiamo andare oltre e compilare e quindi premere play.
‫E quello che vedrai è che la piattaforma è in realtà 100 unità più in alto nell'aria.
‫Prendiamoci un secondo qui ed espelliamo con F8 e mettiamo in pausa il gioco con il pulsante di pausa nella barra
‫degli strumenti principale, quindi selezioniamo una piattaforma mobile per darle un'occhiata nel riquadro dei dettagli.
‫Per farlo, devo effettivamente fare clic su di esso nella finestra per qualche motivo a volte non funziona semplicemente facendo clic
‫su di esso nella struttura.
‫M E vorrei sottolineare che il valore nel mio vettore, il valore Z nel mio vettore è 100 unità
‫in meno rispetto alla posizione Z della trasformazione.
‫Quindi puoi vedere che l'aggiunta a quel vettore locale ha avuto un impatto.
‫Abbiamo la nostra posizione 100 unità in più rispetto alla posizione nel mio vettore.
‫E la cosa davvero fantastica delle variabili locali è che quando la funzione ha terminato la sua
‫particolare esecuzione, vengono cancellate e ripristinate.
‫Quindi puoi sempre sapere cosa aspettarti con la variabile locale.
‫Sai sempre quale valore ci sarà, a differenza di una variabile di classe che può essere aggiornata in qualsiasi
‫momento da qualsiasi altra funzione.
‫Quindi metteremo alla prova queste variabili locali tra poche lezioni.
‫Continuiamo.