﻿1
00:00:04,520 --> 00:00:05,630
‫Ciao e Benvenuto.

2
00:00:05,630 --> 00:00:11,450
‫In questa lezione impareremo le funzioni che non risiedono nei progetti di livello, ma

3
00:00:11,690 --> 00:00:14,240
‫in una particolare classe di progetti.

4
00:00:14,240 --> 00:00:19,880
‫Queste sono chiamate funzioni membro e sono assolutamente cruciali per la programmazione orientata agli oggetti.

5
00:00:20,210 --> 00:00:22,400
‫Entriamo e vediamo come funzionano.

6
00:00:23,270 --> 00:00:31,370
‫Quindi nella nostra funzione proiettile di spawn nei progetti di livello, abbiamo un carico di nodi qui relativi all'aggiunta

7
00:00:31,400 --> 00:00:36,590
‫dell'impulso, all'ottenimento della direzione dell'impulso e all'ottenimento del componente mesh statico.

8
00:00:37,010 --> 00:00:43,310
‫Tutti questi nodi utilizzano in modo approfondito l'istanza del proiettile BP.

9
00:00:43,700 --> 00:00:50,600
‫Non sarebbe fantastico se potessimo prendere tutto questo codice e spostarlo nel proiettile BP in modo che il codice

10
00:00:50,600 --> 00:00:54,860
‫che si occupa di quei dati viva con i dati stessi?

11
00:00:55,370 --> 00:00:59,300
‫Bene, questo è il punto centrale della programmazione orientata agli oggetti.

12
00:00:59,300 --> 00:01:06,770
‫Quindi possiamo definire la programmazione orientata agli oggetti come funzioni che vivono con i dati che manipolano.

13
00:01:07,490 --> 00:01:09,020
‫Quindi come funziona?

14
00:01:09,020 --> 00:01:13,250
‫Come possiamo creare funzioni su particolari istanze di cose?

15
00:01:14,000 --> 00:01:20,060
‫Bene, un modo in cui possiamo farlo, possiamo andare al nostro per aprire la nostra classe di proiettili BP

16
00:01:20,060 --> 00:01:26,960
‫e assicurarci di fare clic su apri l'editor di blueprint completo è puoi vedere che in questo editor di blueprint completo c'è

17
00:01:26,960 --> 00:01:35,270
‫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

18
00:01:35,270 --> 00:01:35,780
‫BP.

19
00:01:35,780 --> 00:01:41,900
‫E darò un nome a questa funzione, stamperò il tuo nome e questo stamperò il tuo nome.

20
00:01:41,900 --> 00:01:43,940
‫La funzione dovrebbe fare proprio questo.

21
00:01:44,240 --> 00:01:49,850
‫Come puoi vedere, abbiamo un nodo che avvia l'esecuzione in questa funzione in modo da poter estrarre il

22
00:01:49,850 --> 00:01:52,430
‫suo pin di esecuzione e digitare print string.

23
00:01:52,430 --> 00:01:53,750
‫Quindi verrà stampato.

24
00:01:53,750 --> 00:01:54,320
‫Ciao.

25
00:01:54,320 --> 00:01:57,140
‫Non è esattamente il nome di questa funzione, vero?

26
00:01:57,170 --> 00:01:59,090
‫Ma lo risolveremo in un secondo.

27
00:01:59,780 --> 00:02:04,070
‫Quindi quello che abbiamo qui è noto come una funzione membro.

28
00:02:04,070 --> 00:02:11,990
‫Una funzione membro è una funzione su una classe che viene sempre chiamata su una particolare istanza di una classe.

29
00:02:11,990 --> 00:02:18,020
‫Quindi non dici, chiamerò o stamperò il tuo nome su tutti i proiettili BP.

30
00:02:18,440 --> 00:02:24,950
‫Devi dire, voglio chiamare, stampare il tuo nome sul proiettile BP numero uno o sul proiettile BP che

31
00:02:24,950 --> 00:02:26,420
‫è appena stato generato.

32
00:02:26,870 --> 00:02:36,580
‫Quindi, se andiamo al nostro progetto di livello, quello che dovresti fare è prendere il riferimento che è uscito dal

33
00:02:36,590 --> 00:02:38,540
‫proiettile BP di spawn.

34
00:02:39,110 --> 00:02:47,990
‫E da quel riferimento potresti chiamare stampa il tuo nome e puoi vedere che si collega automaticamente a

35
00:02:47,990 --> 00:02:51,770
‫una nota di input speciale chiamata Target.

36
00:02:51,890 --> 00:02:54,380
‫E ovviamente devi collegare anche i tuoi pin di esecuzione.

37
00:02:54,380 --> 00:02:58,430
‫Ho intenzione di collegarlo per accadere dopo aver aggiunto l'impulso.

38
00:02:58,610 --> 00:03:07,220
‫Ma la cosa interessante di questo nodo di input target speciale è che se vai al proiettile BP, vedrai

39
00:03:07,310 --> 00:03:08,690
‫quella stampa.

40
00:03:08,690 --> 00:03:12,620
‫Il tuo nome non ha tale carico di input.

41
00:03:12,920 --> 00:03:14,510
‫Allora cosa sta succedendo qui?

42
00:03:15,080 --> 00:03:24,020
‫Bene, implicitamente, qualsiasi funzione membro ha un parametro che è la sua destinazione corrente o l'istanza corrente.

43
00:03:24,620 --> 00:03:31,670
‫E puoi ottenerlo facendo clic con il pulsante destro del mouse sul grafico dell'evento del progetto e digitando self.

44
00:03:32,510 --> 00:03:37,850
‫E puoi vedere che c'è un nodo chiamato ottieni un riferimento a sé e crea semplicemente un nodo personale come

45
00:03:37,850 --> 00:03:38,210
‫questo.

46
00:03:38,660 --> 00:03:46,340
‫E quindi puoi usare questo riferimento all'oggetto sé per ottenere una qualsiasi delle proprietà su questo particolare oggetto.

47
00:03:46,340 --> 00:03:53,240
‫Quindi, se vogliamo ottenere il nome del nostro proiettile BP, è possibile estrarre il riferimento personale e

48
00:03:53,240 --> 00:03:56,900
‫digitare get display name, cosa che abbiamo già fatto.

49
00:03:57,200 --> 00:04:00,980
‫E poi puoi collegare il nome visualizzato nella nostra stringa di stampa.

50
00:04:01,370 --> 00:04:09,650
‫Quindi ora, quando giochiamo e spariamo un nuovo proiettile, puoi vedere che sta stampando il nome del proiettile e

51
00:04:10,280 --> 00:04:17,180
‫puoi vedere se ogni nuovo proiettile crea il nome è diverso perché il sé a cui

52
00:04:17,180 --> 00:04:23,600
‫fa riferimento la funzione membro è un sé diverso è un proiettile diverso.

53
00:04:23,780 --> 00:04:31,490
‫Quindi abbiamo appreso che self è un nodo disponibile all'interno di una funzione membro che punta

54
00:04:31,490 --> 00:04:35,120
‫sempre all'istanza corrente specifica che stiamo utilizzando.

55
00:04:35,270 --> 00:04:40,160
‫Quindi lo scopo principale di guardare le funzioni membro in primo luogo, il motivo per cui abbiamo iniziato era

56
00:04:40,160 --> 00:04:45,620
‫a causa di questi nodi nei progetti di livello, il modo in cui otteniamo il mash statico, otteniamo il vettore in

57
00:04:45,620 --> 00:04:48,020
‫avanti e quindi aggiungiamo un impulso a questi.

58
00:04:48,620 --> 00:04:51,860
‫Questi si sentono come se dovessero vivere sul proiettile BP.

59
00:04:51,860 --> 00:04:55,100
‫E quindi è quello che vorrei sfidarti a fare.

60
00:04:55,430 --> 00:04:58,670
‫Quindi questa è un'accusa un po' complicata, ma ci stiamo avvicinando alla fine della sezione.

61
00:04:58,670 --> 00:05:01,490
‫Quindi ti guiderò passo dopo passo.

62
00:05:02,120 --> 00:05:03,850
‫Quindi faremo una funzione di lancio.

63
00:05:04,030 --> 00:05:07,470
‫Shine sul progetto BP, creato anche sui progetti BP.

64
00:05:07,480 --> 00:05:09,720
‫Andrò a quelle parti più e ne aggiungerò una nuova.

65
00:05:09,730 --> 00:05:10,840
‫Chiamalo lancio.

66
00:05:11,500 --> 00:05:18,670
‫Quindi taglia e incolla i nodi dai progetti di livello in questa tua funzione appena creata e assicurati di

67
00:05:18,670 --> 00:05:21,850
‫collegare pin di esecuzione e così via.

68
00:05:22,600 --> 00:05:24,820
‫Ora proverai a compilare.

69
00:05:25,120 --> 00:05:30,190
‫Non lo abbiamo fatto molto spesso nei progetti, ma la compilazione ti consente semplicemente di

70
00:05:30,400 --> 00:05:36,730
‫eseguire il controllo ortografico del tuo codice e assicurarti che non ci siano errori che il compilatore Blueprint può prevedere.

71
00:05:36,940 --> 00:05:43,570
‫Quindi il modo in cui lo fai è andare al pulsante in alto a sinistra e premere compila e, se

72
00:05:43,570 --> 00:05:48,550
‫ci sono errori, verranno visualizzati in basso nel piccolo riquadro chiamato risultati del compilatore.

73
00:05:48,550 --> 00:05:53,470
‫Puoi vedere che ho compilato correttamente, ma eventuali errori verranno visualizzati qui e talvolta otterrai un po

74
00:05:53,470 --> 00:05:57,010
‫'di rosso su un nodo per indicare dove si trova l'errore.

75
00:05:57,910 --> 00:06:03,550
‫E mi piacerebbe vedere se puoi provare a capire cosa sta dicendo quell'errore e provare a correggere

76
00:06:03,760 --> 00:06:07,210
‫l'errore usando il nuovo nodo self di cui abbiamo imparato.

77
00:06:07,990 --> 00:06:15,730
‫E poi devi andare avanti e chiamare quella funzione dai progetti di livello trascinando fuori dall'istanza come abbiamo fatto

78
00:06:15,730 --> 00:06:22,570
‫per il nostro nodo stampa te stesso trascinando fuori dall'istanza del nuovo proiettile creato dal nodo di

79
00:06:22,570 --> 00:06:25,720
‫spawn e chiama la funzione di lancio.

80
00:06:26,260 --> 00:06:28,150
‫Metti in pausa il video e prova.

81
00:06:31,280 --> 00:06:31,970
‫Bene.

82
00:06:31,970 --> 00:06:32,780
‫Ben tornato.

83
00:06:32,840 --> 00:06:39,260
‫Quindi andrò al nostro proiettile BP, premi il pulsante più accanto alle funzioni nel riquadro

84
00:06:39,260 --> 00:06:47,030
‫del mio progetto e digito launch per nominare la funzione che torniamo al nostro progetto di livello, ritaglia

85
00:06:47,030 --> 00:06:51,440
‫i nodi ed entra nel proiettile BP e incollali.

86
00:06:52,130 --> 00:06:58,460
‫Ora devo collegare l'esecuzione dal lancio per aggiungere l'impulso e ora colpirò, compilerò e vedi

87
00:06:58,490 --> 00:07:04,580
‫che ottengo un errore sul mash statico o ottengo il nodo mash statico.

88
00:07:05,120 --> 00:07:10,310
‫E se guardi nei risultati del compilatore, dice che usa una destinazione non valida.

89
00:07:10,820 --> 00:07:15,240
‫Quindi indirizzare questo input qui non è corretto.

90
00:07:15,260 --> 00:07:24,470
‫Ora, come ti ho consigliato di fare, puoi fare clic con il pulsante destro del mouse e digitare self per ottenere un riferimento

91
00:07:24,470 --> 00:07:28,190
‫a sé e quindi portare quel sé nell'obiettivo.

92
00:07:28,850 --> 00:07:34,430
‫Ora se premi di nuovo compile, puoi vedere che l'errore è scomparso ed

93
00:07:34,430 --> 00:07:43,250
‫è stato compilato correttamente perché quello che sta succedendo è che ora è in grado di ottenere i componenti statici dal proiettile corrente.

94
00:07:43,490 --> 00:07:45,770
‫Questa funzione di avvio viene richiamata.

95
00:07:46,550 --> 00:07:56,030
‫Quindi, se torniamo ora ai nostri progetti di livello, possiamo prendere il pin di output dal nostro attore di spawn e possiamo digitare

96
00:07:56,030 --> 00:07:59,890
‫launch per chiamare la nostra funzione di lancio.

97
00:07:59,900 --> 00:08:06,050
‫Puoi vedere che il pin di esecuzione è stato collegato automaticamente per me e poi dopo la funzione di

98
00:08:06,050 --> 00:08:12,140
‫avvio possiamo collegare la nostra funzione di stampa del tuo nome se lo desideriamo, anche se era solo

99
00:08:12,560 --> 00:08:18,920
‫per scopi di debug e dimostrazione e se lo provi, tu può vedere che si sta ancora lanciando con

100
00:08:18,920 --> 00:08:24,470
‫successo tranne che ora il codice che si occupa del lancio di vite sul proiettile stesso.

101
00:08:24,560 --> 00:08:25,190
‫Roba fantastica.

102
00:08:25,190 --> 00:08:30,800
‫Abbiamo appreso uno dei concetti fondamentali della programmazione orientata agli oggetti nelle funzioni dei membri di questa lezione.

103
00:08:30,950 --> 00:08:32,510
‫Ci vediamo nel prossimo.

