﻿1
00:00:04,400 --> 00:00:05,180
‫Ciao e Benvenuto.

2
00:00:05,180 --> 00:00:10,070
‫In questa lezione, esamineremo una funzione speciale chiamata costruttore che ci consente di

3
00:00:10,070 --> 00:00:13,640
‫fornire valori predefiniti alle proprietà nella nostra classe.

4
00:00:13,850 --> 00:00:16,760
‫E vedremo quando verrà chiamato nell'editor.

5
00:00:16,790 --> 00:00:18,590
‫Immergiamoci e scopriamolo.

6
00:00:19,460 --> 00:00:25,400
‫Ora, con questo componente trigger, vorrei aggiungere una funzione del componente tick qui in

7
00:00:25,400 --> 00:00:32,420
‫modo da poter controllare quali componenti, quali altri attori si stanno attualmente sovrapponendo a questo componente trigger

8
00:00:32,420 --> 00:00:36,740
‫e potremmo attivare se è il giusto tipo di attore.

9
00:00:37,610 --> 00:00:39,860
‫Il problema è che vedremo qual è il problema.

10
00:00:39,860 --> 00:00:46,160
‫Proviamo a implementare una funzione tick se andiamo al grab per vedere come dovrebbe essere la

11
00:00:46,160 --> 00:00:50,420
‫dichiarazione di una funzione componente, deve essere nella sezione pubblica.

12
00:00:50,720 --> 00:00:53,420
‫È un vuoto virtuale, componenti tick, tempo delta.

13
00:00:53,420 --> 00:00:55,700
‫Ci sono molti parametri, quindi copialo.

14
00:00:56,070 --> 00:01:04,190
‫Vai all'intestazione del componente tick, aggiungilo sotto il nostro inizio di riproduzione e quindi copieremo quella

15
00:01:04,490 --> 00:01:09,470
‫definizione, la riprenderemo nel nostro passaggio del componente trigger.

16
00:01:10,010 --> 00:01:13,250
‫E una cosa che noterà è che ci sono un paio di parole chiave qui che possiamo rimuovere.

17
00:01:13,250 --> 00:01:15,080
‫Possiamo rimuovere la parola chiave virtuale.

18
00:01:15,080 --> 00:01:17,000
‫Questa è generalmente una regola che possiamo seguire.

19
00:01:17,000 --> 00:01:19,370
‫Possiamo anche rimuovere la parola chiave override.

20
00:01:19,370 --> 00:01:21,830
‫Queste sono cose che non devono essere presenti nel file C++.

21
00:01:22,310 --> 00:01:24,710
‫Dobbiamo aggiungere il nome della classe.

22
00:01:24,710 --> 00:01:33,020
‫Quindi provi un componente due punti, due punti, quindi sostituiamo il nostro punto e virgola con alcune parentesi graffe e dobbiamo

23
00:01:33,020 --> 00:01:35,840
‫effettuare la chiamata al componente super tick.

24
00:01:35,840 --> 00:01:43,400
‫Quindi, poiché è una chiamata piuttosto lunga, la copierò da e ne prenderò una copia e la incollerò in questo.

25
00:01:43,400 --> 00:01:49,010
‫Ora ciò che sta facendo è essenzialmente chiamare la funzione del componente tick del genitore.

26
00:01:49,010 --> 00:01:52,640
‫Quindi il genitore in questo caso è il nostro componente box.

27
00:01:53,000 --> 00:02:00,020
‫Quindi è importante chiamarlo nel caso in cui ci siano funzionalità che devono essere utilizzate e abilitate affinché

28
00:02:00,020 --> 00:02:01,340
‫questo componente funzioni.

29
00:02:01,640 --> 00:02:06,680
‫Se non lo facciamo, stiamo essenzialmente bypassando una qualsiasi di queste funzionalità e le cose possono rompersi.

30
00:02:06,920 --> 00:02:07,630
‫Quindi molto importante.

31
00:02:07,650 --> 00:02:13,670
‫Ricorda sempre che è una chiamata a super quando stiamo implementando il componente start, play e tick.

32
00:02:13,850 --> 00:02:18,650
‫Ora copiamo il nostro messaggio di registro da Begin Play e lo inseriamo nel componente tick invece di dire componente

33
00:02:18,650 --> 00:02:19,010
‫tick.

34
00:02:19,010 --> 00:02:27,080
‫L'accesso per dire che il componente tick sta spuntando qui e andremo avanti e compileremo e vedremo se quel

35
00:02:27,080 --> 00:02:29,030
‫tick sta effettivamente funzionando.

36
00:02:29,300 --> 00:02:33,920
‫Una volta terminato il compilatore, andiamo avanti e premiamo play, apriamo il nostro registro di output e.

37
00:02:34,130 --> 00:02:37,340
‫Hmm, beh, sembra che non stia succedendo nulla ora.

38
00:02:37,340 --> 00:02:43,820
‫La ragione di ciò è che per quanto riguarda l'ottimizzazione, la maggior parte dei componenti non è reale automaticamente ha il

39
00:02:43,820 --> 00:02:45,320
‫segno di spunta disattivato.

40
00:02:45,590 --> 00:02:49,760
‫Quindi gli attori di solito lo hanno attivato per impostazione predefinita, ma i componenti di solito lo hanno spento.

41
00:02:49,880 --> 00:02:54,860
‫Quindi, in effetti, se osserviamo alcuni degli altri componenti che abbiamo, come la nostra mossa che sappiamo che il

42
00:02:54,860 --> 00:02:58,550
‫ticchettio funziona per te, puoi vedere che nella parte superiore del file c'è questo.

43
00:02:58,550 --> 00:03:06,890
‫Muovi una funzione e ha questo segno di spunta del componente primario, il punto B può mai spuntare uguale a vero

44
00:03:06,890 --> 00:03:09,710
‫se non imposti questa proprietà sulla classe.

45
00:03:09,710 --> 00:03:15,230
‫Quindi questa è una proprietà della classe come proprietà del classico componente principale tick ed è una struttura

46
00:03:15,230 --> 00:03:19,100
‫che ha una B può avere una proprietà tick al suo interno.

47
00:03:19,580 --> 00:03:28,430
‫Quindi quello che stiamo facendo qui è impostare questo valore predefinito sulla classe move quando la costruiamo.

48
00:03:28,430 --> 00:03:29,630
‫Ecco cos'è questa funzione.

49
00:03:29,630 --> 00:03:36,920
‫Si chiama costruttore ed è una funzione che viene chiamata ogni volta che creiamo un nuovo componente motore

50
00:03:37,190 --> 00:03:39,920
‫per impostare automaticamente i valori predefiniti.

51
00:03:40,160 --> 00:03:44,570
‫Possiamo impostare alcuni valori predefiniti nell'intestazione del file come abbiamo fatto con dovrebbe spostare il tempo di spostamento.

52
00:03:44,810 --> 00:03:50,690
‫Ma un'alternativa a fare sempre nel file di intestazione è che possiamo effettivamente impostare queste proprietà

53
00:03:50,690 --> 00:03:51,620
‫nel costruttore.

54
00:03:51,860 --> 00:03:54,890
‫Ora vorrei che notassi la sintassi qui.

55
00:03:55,100 --> 00:04:02,300
‫Se passiamo allo spostamento davanti al file, puoi vedere che un costruttore ha lo stesso nome

56
00:04:02,300 --> 00:04:03,290
‫della classe.

57
00:04:03,290 --> 00:04:11,510
‫Quindi il tuo motore è il nome della classe per i nostri componenti del motore e il suo costruttore è anche chiamato avviso del tuo

58
00:04:11,870 --> 00:04:12,320
‫motore.

59
00:04:12,320 --> 00:04:14,600
‫Non ha nemmeno un tipo di ritorno.

60
00:04:14,600 --> 00:04:19,460
‫Non ha senso restituire nulla perché stiamo costruendo un nuovo oggetto.

61
00:04:19,460 --> 00:04:22,670
‫Stiamo solo realizzando questa lezione.

62
00:04:22,880 --> 00:04:30,530
‫Quindi tutto ciò di cui abbiamo bisogno è accedere alle proprietà di questa classe e notare anche che è impostata su public.

63
00:04:30,530 --> 00:04:35,060
‫Quindi è nella sezione pubblica della nostra definizione di classe.

64
00:04:35,210 --> 00:04:39,410
‫Quindi vorrei sfidarti ad abilitare il ticchettio per te stesso.

65
00:04:39,410 --> 00:04:44,660
‫Quindi creerai un costruttore nell'intestazione e tieni presente quella sintassi che abbiamo visto sia

66
00:04:44,660 --> 00:04:51,800
‫nei filmati di spostamento o H che nel grabber H, abiliterai il ticchettio, come abbiamo visto di nuovo in quegli

67
00:04:51,800 --> 00:04:54,410
‫altri componenti nei loro file CP.

68
00:04:54,710 --> 00:04:56,900
‫Quindi puoi solo copiare come viene fatto.

69
00:04:57,380 --> 00:05:02,380
‫Puoi anche accedere dal costruttore per provare a vedere quando viene chiamato?

70
00:05:02,390 --> 00:05:03,590
‫È come iniziare a giocare?

71
00:05:03,720 --> 00:05:07,050
‫O viene chiamato prima di essere in gioco o cosa?

72
00:05:07,260 --> 00:05:09,600
‫Vai e pubblica un video e provaci.

73
00:05:12,920 --> 00:05:13,250
‫Bene.

74
00:05:13,250 --> 00:05:14,030
‫Ben tornato.

75
00:05:14,060 --> 00:05:20,480
‫Quindi entreremo nel nostro componente trig su H e creeremo una nuova sezione pubblica.

76
00:05:20,480 --> 00:05:26,120
‫E qui stiamo ricordando i due punti alla fine e quindi dobbiamo chiamarlo esattamente come la

77
00:05:26,120 --> 00:05:26,600
‫classe.

78
00:05:26,600 --> 00:05:27,980
‫Quindi non è un componente trigger.

79
00:05:27,980 --> 00:05:33,260
‫Non sei tu ad attivare, sei ad attivare i componenti per intero.

80
00:05:33,260 --> 00:05:39,710
‫E poi non abbiamo argomenti in questo costruttore, quindi mettiamo solo parentesi vuote e poi un punto e

81
00:05:39,710 --> 00:05:41,540
‫virgola alla fine della riga.

82
00:05:41,540 --> 00:05:46,850
‫Ora possiamo passare al file CPP e possiamo fare l'implementazione qui.

83
00:05:46,860 --> 00:05:48,230
‫Ancora una volta, non abbiamo bisogno di un tipo di ritorno.

84
00:05:48,230 --> 00:05:53,330
‫Quindi sei solo tu a attivare i componenti, i due punti.

85
00:05:53,330 --> 00:05:58,280
‫I due punti attivano componenti un po' ripetitivi, ma è così che funziona.

86
00:05:58,610 --> 00:06:05,210
‫Quindi mettiamo alcune parentesi graffe e qui possiamo eseguire qualsiasi codice di configurazione per fornire i valori predefiniti

87
00:06:05,510 --> 00:06:06,920
‫all'istanza della classe.

88
00:06:07,430 --> 00:06:12,470
‫Quindi, se andiamo a prendere un CPP e diamo un'occhiata a cosa sta facendo, puoi vedere che ha

89
00:06:12,470 --> 00:06:16,460
‫il suo componente principale tecnologico, il punto B può mai considerarlo uguale a vero.

90
00:06:16,790 --> 00:06:17,750
‫Quindi scriviamolo.

91
00:06:17,750 --> 00:06:26,330
‫Il punto di spunta del componente primario B può sempre spuntare B è solo un prefisso che usiamo spesso quando le cose

92
00:06:26,330 --> 00:06:31,280
‫hanno un tipo booleano impostato uguale a vero con una t minuscola.

93
00:06:31,760 --> 00:06:38,690
‫Quindi, poiché le modifiche a un costruttore non vengono sempre propagate correttamente nella codifica live,

94
00:06:38,690 --> 00:06:39,740
‫chiuderò l'editor.

95
00:06:40,130 --> 00:06:46,370
‫Ricostruirò dall'interno del codice di Visual Studio, quindi eseguirò il riavvio dal nuovo file di

96
00:06:46,370 --> 00:06:46,790
‫progetto.

97
00:06:47,030 --> 00:06:51,230
‫Quando ciò è fatto, vado avanti e premi play, dai un'occhiata al nostro registro di output.

98
00:06:51,470 --> 00:06:54,620
‫E abbastanza sicuro, possiamo vedere che il componente trigger sta ticchettando.

99
00:06:55,250 --> 00:07:00,170
‫Quindi rimuoverò quel messaggio di registro perché è fastidioso e chiuderò il registro di output nel

100
00:07:00,170 --> 00:07:04,430
‫codice di Visual Studio, rimuoverò questo messaggio di registro nel componente tick.

101
00:07:04,430 --> 00:07:05,780
‫Possiamo vedere che ora funziona.

102
00:07:06,500 --> 00:07:10,670
‫E quello che volevamo fare era fare un log nel nostro costruttore.

103
00:07:11,840 --> 00:07:17,960
‫Quindi facciamo un nuovo registro che dice costruzione, vediamo se il codice live può raccoglierlo questa volta e poi

104
00:07:17,960 --> 00:07:21,620
‫andiamo al nostro registro di output e diamo subito un'occhiata.

105
00:07:21,650 --> 00:07:23,450
‫Non compare niente qui.

106
00:07:24,290 --> 00:07:28,160
‫Bene, se vado avanti e premo play, dai un'occhiata al mio registro di output.

107
00:07:28,370 --> 00:07:33,950
‫Posso vedere il messaggio di registro che il componente trigger è vivo e molto prima di questo.

108
00:07:33,950 --> 00:07:38,720
‫In realtà, puoi vedere che sta costruendo molto più avanti quando sta solo creando il mondo.

109
00:07:39,050 --> 00:07:44,600
‫Inizia a costruire molto presto prima di iniziare ovviamente a giocare perché dobbiamo preparare il mondo intero prima

110
00:07:44,600 --> 00:07:46,130
‫di iniziare a giocare.

111
00:07:46,550 --> 00:07:51,440
‫Quindi succede quando premiamo play, ma in realtà succede anche nell'editor.

112
00:07:51,440 --> 00:07:58,070
‫Quindi, se seleziono un attore qui e poi aggiungo un componente e aggiungo il nostro trigger, dai un'occhiata al mio

113
00:07:58,070 --> 00:07:59,240
‫registro di output.

114
00:07:59,240 --> 00:08:03,020
‫Quindi puoi vedere che il messaggio di costruzione è stato effettivamente stampato.

115
00:08:03,020 --> 00:08:10,430
‫Quindi dobbiamo stare attenti a ciò che facciamo nei nostri costruttori perché in realtà vengono chiamati il codice

116
00:08:10,430 --> 00:08:14,480
‫C++ viene chiamato proprio quando stiamo modificando, nemmeno giocando.

117
00:08:14,480 --> 00:08:19,790
‫Questi oggetti vengono creati e quindi impostati e quindi devono chiamare il loro costruttore.

118
00:08:20,120 --> 00:08:25,850
‫Andrò avanti ed eliminerò di nuovo il trigger e chiarirò un po' rimuovendo, costruendo un messaggio di

119
00:08:25,850 --> 00:08:29,960
‫registro e anche il nostro messaggio di registro di inizio riproduzione.

120
00:08:30,200 --> 00:08:30,770
‫Roba fantastica.

121
00:08:30,770 --> 00:08:37,370
‫Quindi in questa lezione abbiamo visto come possiamo impostare i nostri componenti in modo che siano quasi identici a quelli creati

122
00:08:37,370 --> 00:08:40,880
‫nei modelli per i componenti della scena e i componenti ACT.

123
00:08:40,880 --> 00:08:47,390
‫Abbiamo visto come usare un costruttore per dare valori predefiniti alle proprietà nella nostra classe.

124
00:08:47,750 --> 00:08:49,340
‫Ci vediamo alla prossima lezione.

