‫Ehi, bentornato.
‫Nell'ultimo video, abbiamo appreso alcuni nuovi identificatori di proprietà che ci consentono di esporre le nostre variabili C++
‫in determinati modi al pannello dei dettagli nei progetti.
‫In questo video impareremo altri specificatori che ci consentono di avere un maggiore controllo sull'accesso a
‫tali variabili.
‫Nel pannello dei dettagli parleremo anche di come possiamo consentire, leggere o scrivere l'accesso
‫nel grafico dell'evento effettivo per una particolare variabile C++.
‫Quindi tuffiamoci dentro.
‫Bene.
‫Quindi sono tornato qui nel codice VS e qui ci sono le variabili che abbiamo creato nell'ultimo video.
‫Ora ecco la mia variabile di velocità.
‫Questo era per la sfida.
‫Probabilmente hai creato una variabile diversa, il che va benissimo, quindi tieni quella variabile lì.
‫Ne faremo altre cose in questo video.
‫Ora abbiamo imparato che possiamo rendere visibile una variabile ovunque, e quando diciamo ovunque, intendiamo
‫sul pannello dei dettagli, su un'istanza o sul progetto predefinito.
‫Abbiamo visto che possiamo anche modificarlo ovunque e quando utilizziamo solo l'istanza visibile, è visibile solo
‫su un'istanza.
‫Non puoi nemmeno vederlo sul progetto predefinito e, in ogni caso, non puoi modificarlo perché è
‫disattivato.
‫Quindi questo ci permette di rendere la nostra variabile visibile solo sull'istanza.
‫Ma cosa succede se vorremmo che fosse visibile solo sul progetto predefinito?
‫Bene, c'è anche uno specificatore per questo.
‫Facciamone un altro in 32 e chiamiamo questo default visibile solo int.
‫E possiamo inizializzarlo su un valore.
‫Gli darò cinque e daremo anche a questa una proprietà U.
‫E le specifiche servono a renderlo visibile solo sulle impostazioni predefinite.
‫Probabilmente puoi indovinare di cosa si tratta.
‫È visibile solo per i valori predefiniti.
‫Quindi compilerò questo e di nuovo qui nell'editor, aprirò di nuovo BP Pond Tank.
‫E con BP Pond Tank auto-selezionato, tutte le nostre variabili sono qui in alto, quindi non
‫la cercherò.
‫Ma ecco i nostri valori predefiniti visibili solo int e ha il valore cinque e ovviamente ora è disattivato come suggerisce
‫il nome, è visibile solo sul valore predefinito.
‫Quindi, se vado nel mondo e seleziono una delle istanze di BP pond tank qui, non ci sono impostazioni predefinite
‫visibili solo int non è visibile sull'istanza, solo su quella predefinita.
‫Quindi ha senso in questo momento.
‫Torniamo al codice VS e abbiamo alcuni altri specificatori da conoscere.
‫Ora abbiamo visto che possiamo modificare ovunque e che con i nostri specificatori visibili possiamo scegliere solo
‫istanza o solo default.
‫Quindi, come probabilmente avrai intuito, possiamo modificare solo l'istanza o solo i valori predefiniti se lo desideriamo.
‫Quindi facciamone un altro paio in 30 due.
‫Ne farò uno chiamato edit defaults only int e lo inizializzerò su un valore diciamo nove e
‫poi un altro int 32 chiamato edit instance only int.
‫E gli darò un valore di 14.
‫Quindi vogliamo che edit defaults only int sia modificabile solo sui default e modifichiamo solo l'istanza e
‫sia modificabile solo sull'istanza.
‫Ora i nomi di questi specificatori sono abbastanza coerenti, quindi vorrei che tu indovinassi solo quali sarebbero gli
‫specificatori per questi due livelli di accesso.
‫Vai avanti e fai una piccola mini sfida veloce.
‫Metti in pausa il video e compila questi campi, vedi se hai ragione.
‫Va bene, quindi queste saranno le tue proprietà e modificheranno le impostazioni predefinite.
‫Solo la fine ti farà probabilmente indovinare.
‫Modifica solo i valori predefiniti e solo per modificare l'istanza int Darò a questa una macro di proprietà u e questa
‫sarà solo l'istanza di modifica.
‫Quindi è abbastanza intuitivo.
‫Andiamo avanti e compiliamo questi e torniamo qui nell'editor con BP -- tank open ecco solo i nostri valori
‫predefiniti di modifica int non vediamo solo l'istanza di modifica e non ci aspettavamo che fosse impostato su
‫nove qui possiamo cambiarlo e se entriamo nel mondo con una delle nostre istanze selezionate, possiamo vedere edit instance only
‫int e ovviamente anche questo è modificabile.
‫Quindi ora abbiamo aggiunto tre nuovi identificatori al nostro grafico qui.
‫Abbiamo solo i valori predefiniti visibili, che si trovano solo nella colonna predefinita e nella riga di sola lettura.
‫E poi abbiamo solo modificare i valori predefiniti e modificare l'istanza solo nelle rispettive righe.
‫Quindi stiamo riempiendo questo grafico abbastanza rapidamente, ma noterai che ci sono un paio di spazi
‫vuoti laggiù a destra e la colonna del grafico degli eventi.
‫Quindi parliamo di questi per un minuto ora.
‫Sono qui in BP Pond Tank e abbiamo tutte queste variabili che abbiamo esposto ai dettagli, ai pannelli, a
‫seconda dei loro specificatori.
‫Puoi vederli qui o su un'istanza.
‫Ma cosa succede se faccio clic con il pulsante destro del mouse qui nel grafico dell'evento?
‫Il grafico degli eventi è un altro luogo in cui possiamo accedere alle variabili e potenzialmente modificarle.
‫Quindi, se digito edit ovunque, non vedo la modifica da nessuna parte.
‫INT non è esposto al grafico degli eventi.
‫Non abbiamo accesso a questo.
‫C'è un altro specificatore che ci consente di esporre le cose qui nel grafico dell'evento e che
‫può funzionare insieme agli specificatori che controllano l'accessibilità del pannello dei dettagli.
‫E vorrei esporre una di queste variabili al grafico degli eventi.
‫Ora, potrei scegliere uno qualsiasi di questi, ma sceglierò questo visibile ovunque.
‫INT Ora l'U.
‫La macro delle proprietà può richiedere più input, quindi è visibile ovunque.
‫Possiamo ancora averlo.
‫Metterò una virgola e vorrei aggiungerne un'altra specificata che darà questa visibilità finale
‫visibile ovunque al grafico dell'evento.
‫Quindi quello che userò è blueprint read, write, blueprint read.
‫La scrittura ha a che fare con il grafico degli eventi.
‫Non ha nulla a che fare con il controllo sul pannello dei dettagli.
‫Ecco a cosa serve questo visibile ovunque.
‫Quindi Blueprint Rewrite fa, come suggerisce il nome, l'accesso in lettura e l'accesso in scrittura.
‫Quindi vediamo come appare.
‫Compiliamo questo e torno qui nell'editor nel grafico dell'evento se faccio clic con il pulsante destro del mouse e digito
‫visibile ovunque.
‫Vedremo due diverse opzioni visibili ovunque int e impostate visibili ovunque.
‫INT Se selezioni, diventa visibile ovunque.
‫INT Otteniamo un nodo e questo è proprio come qualsiasi altro nodo blueprint, rappresenta quella variabile C++ e se
‫trasciniamo fuori da questo, possiamo accedere a quel valore per fare qualcosa con esso.
‫Ora scorro e vedrai che questi nodi in grigio attore iniziano, si sovrappongono e spuntano
‫gli eventi e Begin Play viene chiamato all'inizio del gioco come sai.
‫Quindi possiamo fare qualcosa qui.
‫Vorrei utilizzare un nodo di stringa di stampa e se trascino e digito stringa di stampa, eccolo qui.
‫È un nodo della funzione blueprint e richiede un input chiamato in string.
‫Ora, se ci passo sopra, dice in string e poi string proprio sotto.
‫Questo è il tipo che questo nodo accetta come parametro di input.
‫E sappiamo che il nostro visibile ovunque int è un int 32, non una stringa.
‫Ma se fai clic sull'output di questa nota e la trascini e la trascini proprio qui nell'input prima di rilasciare il
‫pulsante sinistro del mouse, vedrai un popup che dice converti intero in stringa e se rilasci ottieni
‫questo pratico nodo di conversione che converte da un intero al tipo stringa, il che è molto utile per
‫noi perché non dobbiamo capire come convertire un intero in una stringa.
‫È solo automatico per noi.
‫Ora, se premo play, vedremo il valore 12 stampato tre volte e durerà solo per pochi secondi.
‫Questo è il comportamento della stringa di stampa.
‫Ora, il motivo per cui lo vediamo tre volte è perché ho tre diverse istanze di vasche per laghetti BP qui
‫nel mondo.
‫A seconda di quanti ne hai trascinati nel mondo, ne vedrai molti.
‫Perché per ciascuna di queste singole istanze, l'inizio del gioco viene chiamato all'inizio del
‫gioco.
‫Quindi, solo per evitare confusione, eliminerò i miei altri due e lascerò una singola istanza di Beep
‫Pond Tank qui nel mondo.
‫Quindi ne ho solo uno e se vado e premo di nuovo play, vedo 12 stampato sullo schermo solo una volta.
‫Quindi questo è l'accesso in lettura a visibile ovunque int, ma abbiamo visto che abbiamo anche l'accesso in scrittura.
‫Ciò significa che possiamo impostarne il valore da qui nel grafico degli eventi.
‫Quindi, se faccio clic con il pulsante destro del mouse e digito di nuovo visibile ovunque int, posso selezionare set visibile ovunque int
‫e ho un nodo setter che riceve un input possiamo passare il valore da qualche altro nodo oppure possiamo prendere
‫questa piccola casella di testo e codice rigido di valore, diciamo 66.
‫E ora non appena il flusso di esecuzione dall'inizio del gioco raggiunge questo
‫nodo, il nodo setter scriverà in visibile ovunque e imposterà il suo valore su 66.
‫E ovviamente possiamo stamparlo di nuovo.
‫Quindi userò la stringa di stampa.
‫E per il valore passato nella stringa di stampa, vorrei il valore di visibile ovunque int.
‫Ora posso farlo in due modi.
‫Il setter ha un nodo di ritorno, quindi dopo aver impostato il valore, restituisce quel valore e possiamo usarlo in
‫modo da poterlo collegare direttamente per stampare la stringa.
‫L'altro modo è semplicemente fare clic con il pulsante destro del mouse e diventare visibile ovunque in uso che get node e
‫possiamo collegare il valore da questo nodo direttamente nella stringa di stampa che farebbe esattamente la stessa cosa.
‫Quindi non ne ho bisogno.
‫Cancellerò quel nodo.
‫E ora quello che mi aspetto di vedere quando gioco è stampare prima il valore di int visibile
‫ovunque, che inizia a 12 e quindi dopo aver impostato il suo valore su 66, dovrei vedere il valore 66 stamparlo su
‫lo schermo.
‫Quindi premiamo play e vediamo 12 e 66.
‫Ora sembrano in ordine inverso.
‫Questo perché print string aggiunge i messaggi più recenti in cima.
‫Quindi è un comportamento normale.
‫Va bene, fantastico.
‫Quindi abbiamo visto che possiamo leggere un progetto variabile in questo momento.
‫Possiamo anche controllare se possiamo o meno impostarlo dal grafico degli eventi.
‫Quindi esponiamo un'altra variabile in modo da poterla ottenere dai progetti ma non impostarla qui è modifica da nessuna parte.
‫INT Aggiungerò una virgola e aggiungerò uno specificato a questo ora per accedervi nel grafico dell'evento
‫ma non per impostarlo o scriverci.
‫L'ora specificata è di sola lettura del progetto, quindi modifica ovunque int ora è di sola lettura del progetto.
‫È ancora modificabile nel pannello dei dettagli, sia nelle impostazioni predefinite che nelle istanze, ma nel grafico degli eventi è di
‫sola lettura.
‫Quindi andiamo avanti e compiliamo questo e torniamo qui nell'editor, farò clic con il pulsante destro del mouse
‫sul grafico dell'evento e digiterò modifica ovunque e verificherò.
‫Abbiamo get edit ovunque, ma non abbiamo un set edit ovunque int perché è un progetto di
‫sola lettura, non possiamo scriverci sopra.
‫Quindi lo selezionerò.
‫Ecco la modifica ovunque.
‫INT E se volessi potrei usare un nodo print string per vederne il valore.
‫Non c'è bisogno di farlo.
‫Sappiamo già come farlo.
‫Sto solo dimostrando che non possiamo scrivere su questa variabile.
‫Va bene, quindi andrò avanti ed evidenzierò questi nodi e li eliminerò.
‫Quindi il nostro grafico è ora compilato.
‫Abbiamo imparato che possiamo rendere le nostre variabili visibili solo sui default e possiamo renderle
‫modificabili solo sui default o solo sull'istanza.
‫Quindi abbiamo davvero il pieno controllo dal lato C++.
‫Ora abbiamo anche visto che possiamo esporre queste variabili al grafico degli eventi e renderle di sola lettura o
‫di lettura corretta utilizzando questi identificatori di sola lettura e scrittura del progetto.
‫Quindi ora hai una sfida.
‫Nell'ultima lezione abbiamo creato una variabile.
‫Ho creato un galleggiante e l'ho chiamato velocità.
‫Ora prenderai quella variabile.
‫Lo crei nell'ultima sezione e ne controlli l'accesso nel grafico degli eventi.
‫Quindi esponilo al grafico degli eventi usando uno dei nuovi specificatori che hai imparato, e quindi
‫testerai l'accesso in lettura e scrittura per questo.
‫Usa un nodo di stringa di stampa in modo da poter vedere il suo valore e se lo cambi, dimostra a te stesso
‫di averlo cambiato.
‫Quindi, se fai in modo che il tuo progetto di variabile venga letto correttamente, prova a cambiarlo con un nodo set e quindi a utilizzare un
‫nodo di stringa di stampa per vedere il suo valore usando l'evento inizia la riproduzione.
‫Se lo hai reso di sola lettura del progetto, puoi semplicemente ottenere il valore e stamparne il valore usando la stringa di
‫stampa.
‫Quindi aggiungi la specifica corretta alla tua variabile personalizzata e usa la stringa di stampa per testare l'accesso nel grafico degli
‫eventi.
‫Metti in pausa il video e prova.
‫Bene.
‫Quindi scorrerò verso il basso fino alla mia variabile di velocità qui e la mia variabile di velocità è modificata ovunque e mi piacerebbe
‫che fosse letto il progetto.
‫Giusto, quindi posso cambiarlo dall'interno del grafico degli eventi.
‫Quindi aggiungerò il progetto, leggerò, scriverò e semplicemente compilerò.
‫Quindi tornando nel serbatoio dello stagno BP, se scrivo speed ora vedo il getter e il setter per questo.
‫Quindi userò la velocità impostata.
‫Ho intenzione di impostare il suo valore da Begin Play.
‫Quindi colleghiamo questo.
‫E per il valore, inserirò 900 e dalla nota impostata se trascino posso digitare print string.
‫Ora farò clic e trascinerò fuori dal nodo di output, lo collegherò alla stringa.
‫Quindi se premo play, c'è 900, nota che dice 900. 0.
‫Questo perché questo è un galleggiante.
‫E quindi mi sta dando la cortesia di mostrare quel primo punto decimale.
‫Quindi è una specie di bella funzionalità integrata qui.
‫Mi mostra una cifra a destra del punto decimale per la mia variabile di velocità.
‫Quindi, in sintesi, abbiamo appreso alcuni identificatori in più per la nuova macro di proprietà.
‫Abbiamo appreso solo i valori predefiniti visibili, modificare solo i valori predefiniti e modificare solo l'istanza.
‫E abbiamo anche imparato come controllare l'accesso in lettura e scrittura nel grafico degli eventi con Blueprint, read,
‫write e Blueprint Read.
‫Solo il programmatore C++ ha un grande controllo su ciò che viene esposto e su ciò che può essere modificato
‫nel progetto e dove li useremo in questa sezione del corso.
‫E continuerai a usarli per tutta la tua carriera come sviluppatore di motori irreali.
‫Ci vediamo alla prossima lezione.