‫Ciao e Benvenuto.
‫In questa lezione, accederemo agli attori sovrapposti in qualcosa chiamato array in modo
‫da poter stampare gli attori che vediamo all'interno di questo volume interamente da C++.
‫Entriamo e vediamo come è fatto.
‫Quindi, come nelle precedenti analogie, immaginiamo che un tipo o una variabile sia una casella in cui mettiamo un valore.
‫Ora, cosa succede se non sappiamo quanti valori vogliamo memorizzare?
‫Potremmo creare molte variabili.
‫Se sapessimo che ne avremmo cinque, potremmo fare cinque variabili.
‫Ma cosa accadrebbe se avessimo qualcosa che è imprevedibilmente molti, come il numero di attori che abbiamo nel nostro
‫livello A, o gli attori che si sovrappongono con un particolare volume di innesco?
‫In questo caso, dobbiamo usare un nuovo tipo di dati chiamato array T in Unreal e fondamentalmente un array T di un
‫certo tipo.
‫Anche in questo caso, stiamo vedendo queste parentesi angolari che, come abbiamo detto, in precedenza, compilano i parametri del tempo.
‫E questa volta prendiamo in considerazione, ancora una volta, un tipo che ci dice quale tipo possiamo memorizzare un array.
‫Un array è come una variabile, tranne per il fatto che ha più caselle e il numero di caselle che abbiamo
‫può essere diverso.
‫Quando stiamo giocando.
‫Può cambiare.
‫Possiamo aggiungere più o meno mentre procediamo nel gioco, poiché le cose iniziano a sovrapporsi con l'aggiunta di più caselle, mentre le
‫cose lasciano la zona di sovrapposizione, le portiamo via.
‫E come ho detto, questo è un parametro all'interno di questi.
‫Parentesi angolari.
‫E quindi potremmo avere una matrice T di int, ad esempio, che memorizzerebbe interi diversi in quelle
‫caselle.
‫Potremmo avere una vasta gamma di puntatori degli attori, e questo in realtà memorizzerebbe i puntatori nelle scatole,
‫il che indicherebbe gli attori nel mondo.
‫E come puoi vedere, potrebbero anche sovrapporsi in modo che alcuni di questi suggerimenti puntino agli stessi attori.
‫Ora pratica che non sarebbe molto utile, ma è certamente possibile.
‫Quindi voglio rivisitare la documentazione del tuo componente primitivo, perché quello che
‫sto cercando qui è una funzione chiamata ottenere attori sovrapposti.
‫E se dai un'occhiata alla funzione Ottieni attori sovrapposti, ce ne sono un paio di versioni.
‫Ma quello che mi interessa di più è il secondo.
‫Non ha un valore di ritorno.
‫È un valore di ritorno nullo.
‫Ma puoi vedere che il primo parametro qui è un array di puntatori attore con una e commerciale alla fine, il
‫che significa che tutto questo è un riferimento a un array t.
‫Ora nota che non è un riferimento costante.
‫Quindi possiamo presumere che questo parametro sia effettivamente un parametro out.
‫Ci fornisce il risultato degli attori sovrapposti e ci dice quali attori si stanno attualmente sovrapponendo alle
‫nostre componenti primitive.
‫Ora capita che il nostro componente box sia un componente primitivo.
‫Quindi il nostro componente trigger è anche componente del progetto e avrei accesso a questa funzione.
‫C'è un secondo argomento qui, ma non dobbiamo preoccuparcene perché in realtà ha un valore
‫predefinito se lo usiamo.
‫Quindi andiamo avanti e proviamo a recuperare e popolare una matrice t di puntatori attivi.
‫Entreremo nel componente del trucco, CPP.
‫Andremo giù ai componenti della zecca.
‫E qui creeremo un array t vuoto che possiamo popolare usando questa funzione.
‫Quindi è la sintassi è t array aprire parentesi angolari una star attore per dire che abbiamo un array t di puntatori attore,
‫chiudere le parentesi angolari e quindi possiamo dare a questa variabile il nome come attori.
‫Quindi chiamiamo per ottenere attori sovrapposti e passiamo alla schiera degli attori.
‫Adesso.
‫Non so perché non lo passano semplicemente come valore di ritorno, ma.
‫Ecco qua.
‫Ci dà l'opportunità di usare quei nostri parametri un po' di più.
‫Ora, va tutto bene.
‫Abbiamo degli attori in una serie.
‫C'è una lunghezza variabile di loro.
‫Potrebbero essercene parecchi.
‫Potrebbe esserci zero.
‫Cosa facciamo con array come questo?
‫Bene, possiamo interrogare quanti elementi ci sono nell'array.
‫Puoi usare le parentesi num punto dell'array e questo può restituire un numero intero che ti dice quanti elementi ci sono
‫nell'array.
‫Quindi in questo particolare array potremmo dire che ce ne sono cinque, e quindi possiamo accedere agli elementi
‫all'interno di quell'array usando queste parentesi quadre.
‫E poi il numero che passi tra parentesi quadre ti dice quale articolo prendere.
‫Ed è una convenzione consueta in molti linguaggi di programmazione che iniziamo a contare da zero negli array.
‫Quindi l'elemento zero di un array è il primo, l'elemento di un array è il secondo, ecc.
‫E così finisci con l'ultimo elemento che è sempre uno in meno rispetto al numero di elementi nell'array.
‫Allora come possiamo usare questa conoscenza?
‫Bene, ad esempio, potremmo stampare gli attori sovrapposti solo se ce n'è più di uno.
‫Quindi come lo faremmo?
‫Vorremmo inserire un'istruzione if dicendo che se il punto num parentesi degli attori è maggiore di zero, allora possiamo fare qualcosa qui, come ottenere
‫l'accesso all'elemento zero dei nostri attori perché sappiamo che se è maggiore di zero, ci deve essere
‫a almeno un elemento lì dentro.
‫Quindi gli elementi zero di questo array devono contenere qualcosa.
‫Non possiamo garantire che il primo elemento, l'unico elemento dell'array contenga qualcosa o che i
‫due elementi contengano qualcosa.
‫Dovremmo controllare se abbiamo abbastanza elementi nell'array per farlo, ma sappiamo sicuramente che
‫qui c'è il primo.
‫Quindi ti sfidiamo a stampare il primo attore sovrapposto da quella matrice.
‫Usa l'array per ottenere il puntatore usando quelle parentesi quadre.
‫Quindi utilizzerai quel puntatore per chiamare, ottenere attore, nome o etichetta, e poi
‫lo stamperai.
‫Metti in pausa il video e prova.
‫Bene.
‫Ben tornato.
‫Quindi possiamo ottenere il puntatore qui usando queste parentesi quadre.
‫E poi prenderò direttamente il nome usando l'operatore freccia e chiamando get attore,
‫nome o etichetta.
‫E lo metterò in una variabile stringa F chiamata nome attore.
‫Quindi faremo un registro U, che chiameremo i due punti sovrapposti.
‫E poi per cento s.
‫E poi il secondo argomento qui dovrebbe essere l'asterisco, il nome dell'attore.
‫Quindi possiamo ricompilare, saltare nel nostro docket del registro di output nel layout.
‫Quindi apriremo il muro segreto della BP perché non voglio stampare questa stringa che confonde
‫le cose.
‫In Blueprint, lo stiamo facendo ora da C++, quindi andiamo al gioco di successo a livello di dungeon.
‫E ovviamente nulla si sta sovrapponendo a quell'attore in questo momento.
‫Quindi cosa succede se entriamo ed entriamo?
‫Puoi vedere che inizia immediatamente a stampare, che stiamo sovrapponendo il lettore BP.
‫Roba fantastica.
‫E se invece dovessimo andare a prendere il gargoyle?
‫Portalo nell'alcova, mettilo dentro e il gioco è fatto.
‫Dice che si sta sovrapponendo alla statua del gargoyle.
‫Roba fantastica.
‫Quindi abbiamo imparato come usare un array t per ottenere un elenco di attori e per scoprire quante cose
‫ci sono in quell'elenco e come ottenere un particolare elemento da quell'elenco.
‫Nella prossima lezione, esamineremo alcune strutture di programmazione che ci consentono di
‫gestire un numero variabile di cose per svolgere un numero variabile di attività.
‫Ci vediamo lì.