‫Ciao e Benvenuto.
‫In questa lezione impareremo le funzioni che non risiedono nei progetti di livello, ma
‫in una particolare classe di progetti.
‫Queste sono chiamate funzioni membro e sono assolutamente cruciali per la programmazione orientata agli oggetti.
‫Entriamo e vediamo come funzionano.
‫Quindi nella nostra funzione proiettile di spawn nei progetti di livello, abbiamo un carico di nodi qui relativi all'aggiunta
‫dell'impulso, all'ottenimento della direzione dell'impulso e all'ottenimento del componente mesh statico.
‫Tutti questi nodi utilizzano in modo approfondito l'istanza del proiettile BP.
‫Non sarebbe fantastico se potessimo prendere tutto questo codice e spostarlo nel proiettile BP in modo che il codice
‫che si occupa di quei dati viva con i dati stessi?
‫Bene, questo è il punto centrale della programmazione orientata agli oggetti.
‫Quindi possiamo definire la programmazione orientata agli oggetti come funzioni che vivono con i dati che manipolano.
‫Quindi come funziona?
‫Come possiamo creare funzioni su particolari istanze di cose?
‫Bene, un modo in cui possiamo farlo, possiamo andare al nostro per aprire la nostra classe di proiettili BP
‫e assicurarci di fare clic su apri l'editor di blueprint completo è puoi vedere che in questo editor di blueprint completo c'è
‫un riquadro del mio progetto e una sezione delle funzioni quindi possiamo premere la freccia più qui per creare una nuova funzione sulla classe del proiettile
‫BP.
‫E darò un nome a questa funzione, stamperò il tuo nome e questo stamperò il tuo nome.
‫La funzione dovrebbe fare proprio questo.
‫Come puoi vedere, abbiamo un nodo che avvia l'esecuzione in questa funzione in modo da poter estrarre il
‫suo pin di esecuzione e digitare print string.
‫Quindi verrà stampato.
‫Ciao.
‫Non è esattamente il nome di questa funzione, vero?
‫Ma lo risolveremo in un secondo.
‫Quindi quello che abbiamo qui è noto come una funzione membro.
‫Una funzione membro è una funzione su una classe che viene sempre chiamata su una particolare istanza di una classe.
‫Quindi non dici, chiamerò o stamperò il tuo nome su tutti i proiettili BP.
‫Devi dire, voglio chiamare, stampare il tuo nome sul proiettile BP numero uno o sul proiettile BP che
‫è appena stato generato.
‫Quindi, se andiamo al nostro progetto di livello, quello che dovresti fare è prendere il riferimento che è uscito dal
‫proiettile BP di spawn.
‫E da quel riferimento potresti chiamare stampa il tuo nome e puoi vedere che si collega automaticamente a
‫una nota di input speciale chiamata Target.
‫E ovviamente devi collegare anche i tuoi pin di esecuzione.
‫Ho intenzione di collegarlo per accadere dopo aver aggiunto l'impulso.
‫Ma la cosa interessante di questo nodo di input target speciale è che se vai al proiettile BP, vedrai
‫quella stampa.
‫Il tuo nome non ha tale carico di input.
‫Allora cosa sta succedendo qui?
‫Bene, implicitamente, qualsiasi funzione membro ha un parametro che è la sua destinazione corrente o l'istanza corrente.
‫E puoi ottenerlo facendo clic con il pulsante destro del mouse sul grafico dell'evento del progetto e digitando self.
‫E puoi vedere che c'è un nodo chiamato ottieni un riferimento a sé e crea semplicemente un nodo personale come
‫questo.
‫E quindi puoi usare questo riferimento all'oggetto sé per ottenere una qualsiasi delle proprietà su questo particolare oggetto.
‫Quindi, se vogliamo ottenere il nome del nostro proiettile BP, è possibile estrarre il riferimento personale e
‫digitare get display name, cosa che abbiamo già fatto.
‫E poi puoi collegare il nome visualizzato nella nostra stringa di stampa.
‫Quindi ora, quando giochiamo e spariamo un nuovo proiettile, puoi vedere che sta stampando il nome del proiettile e
‫puoi vedere se ogni nuovo proiettile crea il nome è diverso perché il sé a cui
‫fa riferimento la funzione membro è un sé diverso è un proiettile diverso.
‫Quindi abbiamo appreso che self è un nodo disponibile all'interno di una funzione membro che punta
‫sempre all'istanza corrente specifica che stiamo utilizzando.
‫Quindi lo scopo principale di guardare le funzioni membro in primo luogo, il motivo per cui abbiamo iniziato era
‫a causa di questi nodi nei progetti di livello, il modo in cui otteniamo il mash statico, otteniamo il vettore in
‫avanti e quindi aggiungiamo un impulso a questi.
‫Questi si sentono come se dovessero vivere sul proiettile BP.
‫E quindi è quello che vorrei sfidarti a fare.
‫Quindi questa è un'accusa un po' complicata, ma ci stiamo avvicinando alla fine della sezione.
‫Quindi ti guiderò passo dopo passo.
‫Quindi faremo una funzione di lancio.
‫Shine sul progetto BP, creato anche sui progetti BP.
‫Andrò a quelle parti più e ne aggiungerò una nuova.
‫Chiamalo lancio.
‫Quindi taglia e incolla i nodi dai progetti di livello in questa tua funzione appena creata e assicurati di
‫collegare pin di esecuzione e così via.
‫Ora proverai a compilare.
‫Non lo abbiamo fatto molto spesso nei progetti, ma la compilazione ti consente semplicemente di
‫eseguire il controllo ortografico del tuo codice e assicurarti che non ci siano errori che il compilatore Blueprint può prevedere.
‫Quindi il modo in cui lo fai è andare al pulsante in alto a sinistra e premere compila e, se
‫ci sono errori, verranno visualizzati in basso nel piccolo riquadro chiamato risultati del compilatore.
‫Puoi vedere che ho compilato correttamente, ma eventuali errori verranno visualizzati qui e talvolta otterrai un po
‫'di rosso su un nodo per indicare dove si trova l'errore.
‫E mi piacerebbe vedere se puoi provare a capire cosa sta dicendo quell'errore e provare a correggere
‫l'errore usando il nuovo nodo self di cui abbiamo imparato.
‫E poi devi andare avanti e chiamare quella funzione dai progetti di livello trascinando fuori dall'istanza come abbiamo fatto
‫per il nostro nodo stampa te stesso trascinando fuori dall'istanza del nuovo proiettile creato dal nodo di
‫spawn e chiama la funzione di lancio.
‫Metti in pausa il video e prova.
‫Bene.
‫Ben tornato.
‫Quindi andrò al nostro proiettile BP, premi il pulsante più accanto alle funzioni nel riquadro
‫del mio progetto e digito launch per nominare la funzione che torniamo al nostro progetto di livello, ritaglia
‫i nodi ed entra nel proiettile BP e incollali.
‫Ora devo collegare l'esecuzione dal lancio per aggiungere l'impulso e ora colpirò, compilerò e vedi
‫che ottengo un errore sul mash statico o ottengo il nodo mash statico.
‫E se guardi nei risultati del compilatore, dice che usa una destinazione non valida.
‫Quindi indirizzare questo input qui non è corretto.
‫Ora, come ti ho consigliato di fare, puoi fare clic con il pulsante destro del mouse e digitare self per ottenere un riferimento
‫a sé e quindi portare quel sé nell'obiettivo.
‫Ora se premi di nuovo compile, puoi vedere che l'errore è scomparso ed
‫è stato compilato correttamente perché quello che sta succedendo è che ora è in grado di ottenere i componenti statici dal proiettile corrente.
‫Questa funzione di avvio viene richiamata.
‫Quindi, se torniamo ora ai nostri progetti di livello, possiamo prendere il pin di output dal nostro attore di spawn e possiamo digitare
‫launch per chiamare la nostra funzione di lancio.
‫Puoi vedere che il pin di esecuzione è stato collegato automaticamente per me e poi dopo la funzione di
‫avvio possiamo collegare la nostra funzione di stampa del tuo nome se lo desideriamo, anche se era solo
‫per scopi di debug e dimostrazione e se lo provi, tu può vedere che si sta ancora lanciando con
‫successo tranne che ora il codice che si occupa del lancio di vite sul proiettile stesso.
‫Roba fantastica.
‫Abbiamo appreso uno dei concetti fondamentali della programmazione orientata agli oggetti nelle funzioni dei membri di questa lezione.
‫Ci vediamo nel prossimo.