﻿1
00:00:03,980 --> 00:00:05,150
‫Ciao e Benvenuto.

2
00:00:05,150 --> 00:00:11,810
‫In questa lezione, prenderemo il nostro pasticcio di progetti e lo organizzeremo ordinatamente in funzioni in modo da

3
00:00:11,810 --> 00:00:17,600
‫poter leggere e capire facilmente cosa sta succedendo nel nostro grafico degli eventi del progetto.

4
00:00:17,870 --> 00:00:19,550
‫Immergiamoci e vediamo come farlo.

5
00:00:20,630 --> 00:00:25,970
‫Ora, se rimpiccioliamo il nostro grafico degli eventi, possiamo vedere che inizia a diventare molto rumoroso.

6
00:00:25,970 --> 00:00:28,580
‫Posso anche vedere un paio di nodi che non sono collegati a nulla.

7
00:00:28,580 --> 00:00:33,740
‫C'è un nodo get ammo, che eliminerò e un nodo set ammo, ma puoi vedere che sta diventando molto

8
00:00:33,740 --> 00:00:34,310
‫rumoroso.

9
00:00:34,310 --> 00:00:36,800
‫Sta diventando difficile capire cosa sta succedendo qui.

10
00:00:36,830 --> 00:00:45,320
‫Ora, una soluzione tipica che le persone fanno è dire, beh, questo blocco di nodi qui riguarda lo spawn del

11
00:00:45,320 --> 00:00:45,950
‫proiettile.

12
00:00:45,950 --> 00:00:47,090
‫Quindi posso selezionare questi.

13
00:00:47,300 --> 00:00:54,020
‫Posso premere il tasto C e metterà un blocco attorno a questo chiamato blocco di commenti.

14
00:00:54,020 --> 00:01:02,300
‫E poi potrei digitare i proiettili di spawn e questo mi fa sapere cosa sta facendo quel blocco di codice.

15
00:01:02,300 --> 00:01:05,180
‫Questo è sicuramente un modo per organizzare il tuo codice.

16
00:01:05,540 --> 00:01:12,530
‫Tuttavia, secondo me, non è il modo migliore e abbiamo strumenti migliori per farlo chiamati funzioni.

17
00:01:12,710 --> 00:01:14,180
‫Quindi quali sono tutte le funzioni?

18
00:01:14,750 --> 00:01:20,450
‫Le funzioni eseguono blocchi di progetto e fanno in modo che i nostri giochi facciano cose.

19
00:01:20,480 --> 00:01:25,100
‫Molti nodi forniti da Unreal sono in realtà già funzioni.

20
00:01:25,430 --> 00:01:27,350
‫Quindi abbiamo incontrato questi.

21
00:01:27,350 --> 00:01:33,140
‫Quando vai e ingrandisci dì sul nostro nodo proiettile attore di spawn, questa è una funzione.

22
00:01:33,140 --> 00:01:39,380
‫Quando osserviamo l'aggiunta di impulso, questa è una funzione per quasi tutti questi nodi, anche cose come andare avanti vettore

23
00:01:39,380 --> 00:01:44,180
‫attivo che non ha un pedale di esecuzione non è blu è anche una funzione

24
00:01:44,180 --> 00:01:50,870
‫che puoi dire perché ha un piccolo simbolo f in alto a sinistra che sta per funzione, ma non siamo limitati alle

25
00:01:50,870 --> 00:01:52,340
‫funzioni fornite da Unreal.

26
00:01:52,340 --> 00:01:56,810
‫Possiamo anche creare le nostre funzioni ed è davvero facile da fare nei progetti.

27
00:01:57,140 --> 00:02:02,570
‫Ci consentono di rimanere organizzati e ci consentono di riutilizzare blocchi di codice.

28
00:02:02,570 --> 00:02:06,320
‫Quindi è meglio di un commento perché un commento devi copiarlo e incollarlo.

29
00:02:06,590 --> 00:02:12,470
‫Mentre una funzione ci consente di condividere un blocco di codice tra più luoghi di utilizzo.

30
00:02:12,710 --> 00:02:19,010
‫Quindi diamo un'occhiata a come possiamo trasformare qualcosa di simile in un blocco di codice.

31
00:02:19,700 --> 00:02:24,530
‫Bene, prima di tutto possiamo eliminare il blocco dei commenti, perché non credo sia necessario.

32
00:02:24,530 --> 00:02:31,280
‫Invece, selezionerò tutti i nodi da gets play a -- fino in fondo per aggiungere impulso, fare clic con il

33
00:02:31,280 --> 00:02:34,910
‫tasto destro su di essi e selezionare Comprimi per funzionare.

34
00:02:35,480 --> 00:02:42,860
‫E questo crea un nuovo blocco e sostituisce tutti quei nodi precedenti che erano lì prima.

35
00:02:42,870 --> 00:02:46,250
‫Ora otterrò questa funzione, un nome che puoi vedere nel riquadro di sinistra.

36
00:02:46,610 --> 00:02:53,840
‫Ha creato una nuova funzione nella sezione delle funzioni nel riquadro del mio progetto e l'ha

37
00:02:53,840 --> 00:02:59,450
‫selezionata per farmi rinominare automaticamente perché dovremmo assolutamente, sicuramente rinominare queste funzioni

38
00:02:59,450 --> 00:03:01,970
‫e lo chiamerò spawn proiettile.

39
00:03:02,120 --> 00:03:09,380
‫E una buona denominazione è assolutamente vitale nella programmazione perché il codice riguarda essenzialmente la comunicazione.

40
00:03:09,590 --> 00:03:14,540
‫Stiamo cercando di comunicare con noi stessi in modo da poter capire ciò che abbiamo scritto.

41
00:03:14,780 --> 00:03:17,180
‫Stiamo cercando di comunicare con noi stessi in futuro.

42
00:03:17,180 --> 00:03:21,650
‫Quando torniamo a questo progetto e ho dimenticato perché l'abbiamo scritto in un certo modo, e quando lavori

43
00:03:21,650 --> 00:03:25,180
‫in team, stai cercando di comunicare anche con il resto della tua squadra.

44
00:03:25,370 --> 00:03:30,920
‫Alcuni dicono che una buona metrica per la qualità del codice è ciò che diamine è al minuto.

45
00:03:31,220 --> 00:03:36,440
‫Quindi se stai leggendo un pezzo di codice e stai dicendo, che diamine, 50 volte al minuto, è un codice

46
00:03:36,440 --> 00:03:41,000
‫piuttosto brutto se lo stai leggendo e solo andando, che diamine, una o due volte al minuto, allora

47
00:03:41,000 --> 00:03:44,900
‫probabilmente è un codice abbastanza buono e ne avrai sempre un po', che diavolo?

48
00:03:44,900 --> 00:03:49,010
‫Quindi stiamo solo cercando di ridurre quel numero che funziona.

49
00:03:49,220 --> 00:03:51,590
‫Fondamentalmente, tendiamo a nominare le funzioni come verbi.

50
00:03:51,590 --> 00:03:58,040
‫Ci sono alcune eccezioni a questa regola di cui parleremo più avanti, ma per lo più le funzioni sono cose che

51
00:03:58,040 --> 00:03:59,210
‫stanno facendo qualcosa.

52
00:03:59,210 --> 00:04:06,200
‫Quindi usiamo fare parole e se non sei sicuro di come nominare questa funzione, se stai lavorando in un team, potresti

53
00:04:06,200 --> 00:04:11,360
‫semplicemente parlare con qualcun altro e chiedere loro come pensano che dovresti chiamarla e che tipo

54
00:04:11,360 --> 00:04:13,970
‫di cose avere un senso per loro.

55
00:04:13,970 --> 00:04:19,700
‫Spesso ti accorgi di essere così radicato in un problema che non riesci a pensare a come parlarne.

56
00:04:19,760 --> 00:04:26,390
‫Quindi potresti chiederti, beh, dove è finito tutto il mio codice quando ho creato questa funzione di spawn del

57
00:04:26,390 --> 00:04:26,930
‫proiettile?

58
00:04:27,440 --> 00:04:34,580
‫Bene, puoi tornare a quei dettagli su come questa funzione è effettivamente implementata facendo doppio clic su di essa nel grafico dell'evento o

59
00:04:34,580 --> 00:04:40,640
‫facendo clic su di essa nella scheda I miei progetti o facendo doppio clic su di essa nella scheda

60
00:04:40,670 --> 00:04:41,780
‫I miei progetti.

61
00:04:41,780 --> 00:04:48,800
‫E puoi vedere che tutti i nostri nodi sono ancora residenti qui proprio ora che si trovano in una scheda

62
00:04:49,040 --> 00:04:56,180
‫separata in modo da poter tornare alla scheda del grafico degli eventi o puoi immergerti nella scheda Spawn proiettile che

63
00:04:56,180 --> 00:04:57,740
‫mostra solo quella funzione.

64
00:04:58,730 --> 00:05:04,880
‫E puoi vedere che c'è un nuovo nodo qui, questo piccolo nodo viola, che è il punto di ingresso della nostra

65
00:05:04,880 --> 00:05:05,390
‫funzione.

66
00:05:05,390 --> 00:05:09,740
‫Questo dice che questo è ciò che dovremmo fare all'avvio della funzione.

67
00:05:09,740 --> 00:05:10,970
‫È solo un punto di ingresso.

68
00:05:11,240 --> 00:05:16,850
‫E ogni volta che viene chiamato, quel nodo attiverà e attiverà tutti gli altri nodi all'interno della

69
00:05:16,850 --> 00:05:17,570
‫nostra funzione.

70
00:05:17,720 --> 00:05:19,690
‫Quindi tornando al grafico degli eventi e.

71
00:05:19,900 --> 00:05:25,690
‫Rimpicciolire, magari unendo un po' gli anodi ora che abbiamo reso il nostro grafico dei nodi molto più piccolo e più

72
00:05:25,690 --> 00:05:26,590
‫facile da leggere.

73
00:05:26,950 --> 00:05:33,520
‫Penso che ci siano un altro paio di candidati qui per noi per estrarre funzioni e sostituire le cose.

74
00:05:34,030 --> 00:05:38,260
‫Uno di questi sarebbe dove stiamo stampando le munizioni.

75
00:05:38,410 --> 00:05:43,720
‫Quindi, in questo caso, stampare le munizioni è qualcosa che facciamo in due punti.

76
00:05:43,720 --> 00:05:47,600
‫Lo facciamo all'inizio del gioco e lo facciamo nel proiettile di spawn.

77
00:05:48,310 --> 00:05:53,920
‫E poi l'altro posto, l'altra cosa, un pezzo di funzionalità che potremmo estrarre in una

78
00:05:54,310 --> 00:06:01,150
‫funzione sarebbe dove stiamo diminuendo le munizioni che potrebbero essere invece inserite in una funzione di diminuzione delle munizioni.

79
00:06:01,240 --> 00:06:09,490
‫Quindi, appena prima di lanciarti la sfida, vorrei eliminare il nodo di conversione e stampare il nodo della

80
00:06:09,670 --> 00:06:15,240
‫stringa dopo il proiettile di spawn perché questo complicherà le cose.

81
00:06:15,250 --> 00:06:21,320
‫Vorrei copiare la funzionalità dall'alto in modo che entrambi appaiano esattamente uguali.

82
00:06:21,340 --> 00:06:29,140
‫Quindi, se copiamo i tre nodi da Begin Play e li incolliamo in basso e colleghiamo i pin di esecuzione, allora

83
00:06:29,140 --> 00:06:35,020
‫puoi vedere che abbiamo esattamente lo stesso set di nodi, abbiamo la stessa funzionalità tra

84
00:06:35,020 --> 00:06:39,910
‫i due e non c'è confusione quando veniamo ad estrarlo in funzione.

85
00:06:39,970 --> 00:06:43,200
‫Quindi vorrei sfidarti a creare altre funzioni.

86
00:06:43,210 --> 00:06:47,090
‫Il primo che consiglierei di fare è diminuire le munizioni.

87
00:06:47,110 --> 00:06:51,820
‫Quindi prendere i tre nodi coinvolti nella diminuzione delle munizioni, estrarli in una funzione e dare loro

88
00:06:51,820 --> 00:06:52,510
‫un nome.

89
00:06:53,020 --> 00:06:55,990
‫E poi il secondo è stampare munizioni.

90
00:06:56,020 --> 00:07:03,220
‫Quindi estrarrai la funzionalità di ottenere, convertire e stampare le munizioni

91
00:07:03,220 --> 00:07:05,530
‫in un'unica funzione.

92
00:07:05,860 --> 00:07:11,710
‫E poiché abbiamo due siti in cui stiamo stampando munizioni, vuoi eliminarne uno e inserire invece

93
00:07:11,710 --> 00:07:16,750
‫la funzione, cosa che puoi fare trascinando dal riquadro del mio progetto.

94
00:07:17,380 --> 00:07:22,720
‫E poi finalmente abbiamo un paio di messaggi di benvenuto, output di nodi di messaggi di benvenuto.

95
00:07:22,720 --> 00:07:26,800
‫Puoi anche estrarli in una funzione di stampa dei messaggi di benvenuto.

96
00:07:27,220 --> 00:07:28,900
‫Metti in pausa il video e prova.

97
00:07:32,110 --> 00:07:32,700
‫Bene.

98
00:07:32,710 --> 00:07:33,430
‫Ben tornato.

99
00:07:33,550 --> 00:07:37,390
‫Quindi estrarremo prima le nostre munizioni ridotte.

100
00:07:37,390 --> 00:07:41,590
‫Quindi ci sono tre nodi coinvolti che faranno clic con il pulsante destro del mouse per comprimere la funzione.

101
00:07:42,190 --> 00:07:47,710
‫Quindi lo chiameremo diminuzione delle munizioni e questo è abbastanza semplice.

102
00:07:47,710 --> 00:07:51,910
‫Quindi genera proiettili per diminuire le munizioni e quindi stiamo stampando le munizioni.

103
00:07:51,910 --> 00:07:58,180
‫Quindi prendiamo i tre nodi, la stringa get convert e print e faremo clic con il pulsante destro del

104
00:07:58,180 --> 00:08:01,750
‫mouse per ridurre la funzione e chiamare questo print ammo.

105
00:08:02,560 --> 00:08:08,530
‫Ora, come ho detto, abbiamo ripetuto questa funzionalità in due punti, quindi elimineremo dove lo fa e

106
00:08:08,530 --> 00:08:16,150
‫inizieremo la piastra e trascineremo semplicemente le munizioni di stampa dal nostro elenco di funzioni e collegheremo i pin di esecuzione in

107
00:08:16,150 --> 00:08:19,570
‫modo che funzioni dopo il nostro stringa di stampa.

108
00:08:20,260 --> 00:08:25,480
‫Il che mi porta all'ultima funzione che voglio creare, che abbiamo detto chiamerà stampa messaggi di benvenuto.

109
00:08:25,690 --> 00:08:27,610
‫Quindi selezionerò le due stringhe di stampa.

110
00:08:27,610 --> 00:08:34,240
‫Devo iniziare a giocare a collasso per funzionare e chiamarlo stampa messaggi di benvenuto.

111
00:08:34,420 --> 00:08:42,220
‫E questo nodo possiamo solo ora riorganizzare tutti i nostri nodi per rendere molto più facile leggere tutto questo in un'unica

112
00:08:42,220 --> 00:08:43,130
‫schermata intera.

113
00:08:43,150 --> 00:08:49,900
‫Puoi vedere che ora è molto più facile capire la funzionalità del nostro gioco perché si adatta

114
00:08:49,900 --> 00:08:56,350
‫tutto su uno schermo ed è ben portato a un livello simile di astrazione e comprensione.

115
00:08:56,350 --> 00:09:02,800
‫E questo è ciò che chiameremmo codice autodocumentante, perché è un codice che non ha bisogno di commenti o

116
00:09:02,800 --> 00:09:04,690
‫documentazione per spiegare cosa fa.

117
00:09:04,930 --> 00:09:06,850
‫Si legge come l'inglese.

118
00:09:07,210 --> 00:09:07,840
‫Roba fantastica.

119
00:09:08,140 --> 00:09:09,880
‫Ci vediamo alla prossima lezione.

