﻿1
00:00:04,520 --> 00:00:05,630
‫Hallo en welkom.

2
00:00:05,630 --> 00:00:11,450
‫In deze lezing gaan we leren over functies die niet in de niveaublauwdrukken voorkomen,

3
00:00:11,690 --> 00:00:14,240
‫maar in een bepaalde blauwdrukklasse.

4
00:00:14,240 --> 00:00:19,880
‫Dit worden lidfuncties genoemd en zijn absoluut cruciaal voor objectgeoriënteerd programmeren.

5
00:00:20,210 --> 00:00:22,400
‫Laten we erin duiken en kijken hoe ze werken.

6
00:00:23,270 --> 00:00:31,370
‫Dus in onze spawn-projectielfunctie in de niveaublauwdrukken, hebben we hier een heleboel knooppunten met betrekking tot het toevoegen van de impuls, het

7
00:00:31,400 --> 00:00:36,590
‫verkrijgen van de richting van de impuls en het verkrijgen van de statische mesh-component.

8
00:00:37,010 --> 00:00:43,310
‫Al deze knooppunten maken diepgaand gebruik van de BP-projectielinstantie.

9
00:00:43,700 --> 00:00:50,600
‫Zou het niet geweldig zijn als we al deze code konden nemen en naar het BP-projectiel konden verplaatsen, zodat de

10
00:00:50,600 --> 00:00:54,860
‫code die met die gegevens omgaat, bij de gegevens zelf hoort?

11
00:00:55,370 --> 00:00:59,300
‫Dat is het hele punt van objectgeoriënteerd programmeren.

12
00:00:59,300 --> 00:01:06,770
‫We kunnen objectgeoriënteerd programmeren dus definiëren als functies die leven met de gegevens die ze manipuleren.

13
00:01:07,490 --> 00:01:09,020
‫Dus hoe werkt dit?

14
00:01:09,020 --> 00:01:13,250
‫Hoe kunnen we functies maken voor bepaalde instanties van dingen?

15
00:01:14,000 --> 00:01:20,060
‫Welnu, een manier waarop we dit kunnen doen, kunnen we gaan om onze BP-projectielklasse te openen en

16
00:01:20,060 --> 00:01:26,960
‫ervoor te zorgen dat we klikken op de volledige blauwdrukeditor openen. Je kunt zien dat er in deze volledige

17
00:01:26,960 --> 00:01:35,270
‫blauwdrukeditor een mijn blauwdruk-paneel en een functiesectie is dus we kunnen hier op de pluspijl drukken om een nieuwe functie op de BP-projectielklasse te

18
00:01:35,270 --> 00:01:35,780
‫creëren.

19
00:01:35,780 --> 00:01:41,900
‫En ik ga deze functie een naam geven, print je naam en dit print je naam.

20
00:01:41,900 --> 00:01:43,940
‫Functie zou precies dat moeten doen.

21
00:01:44,240 --> 00:01:49,850
‫We kunnen zien dat we een knooppunt hebben dat de uitvoering bij deze functie start, zodat we de

22
00:01:49,850 --> 00:01:52,430
‫uitvoeringspen kunnen verwijderen en de afdrukreeks kunnen typen.

23
00:01:52,430 --> 00:01:53,750
‫Dus dat gaat uitprinten.

24
00:01:53,750 --> 00:01:54,320
‫Hallo.

25
00:01:54,320 --> 00:01:57,140
‫Niet bepaald de naam van deze functie, toch?

26
00:01:57,170 --> 00:01:59,090
‫Maar dat lossen we zo op.

27
00:01:59,780 --> 00:02:04,070
‫Dus wat we hier hebben, staat bekend als een ledenfunctie.

28
00:02:04,070 --> 00:02:11,990
‫Een lidfunctie is een functie op een klasse die altijd wordt aangeroepen op een bepaalde instantie van een klasse.

29
00:02:11,990 --> 00:02:18,020
‫Dus je zegt niet, ik ga je naam roepen of printen op alle BP-projectielen.

30
00:02:18,440 --> 00:02:24,950
‫Je moet zeggen, ik wil bellen, je naam afdrukken op BP-projectiel nummer één, of BP-projectiel dat

31
00:02:24,950 --> 00:02:26,420
‫net is voortgebracht.

32
00:02:26,870 --> 00:02:36,580
‫Dus als we naar onze niveaublauwdruk gaan, zou je de referentie moeten nemen die uit het

33
00:02:36,590 --> 00:02:38,540
‫spawn BP-projectiel kwam.

34
00:02:39,110 --> 00:02:47,990
‫En vanuit die referentie zou je print je naam kunnen noemen en je kunt zien dat het automatisch verbinding

35
00:02:47,990 --> 00:02:51,770
‫maakt met een speciale invoernotitie genaamd Target.

36
00:02:51,890 --> 00:02:54,380
‫En natuurlijk moet je ook je executiepinnen aansluiten.

37
00:02:54,380 --> 00:02:58,430
‫Ik ga het aansluiten om te gebeuren nadat ik impuls heb toegevoegd.

38
00:02:58,610 --> 00:03:07,220
‫Maar wat interessant is aan dit speciale doelinvoerknooppunt, is dat als je naar het BP-projectiel gaat, je die

39
00:03:07,310 --> 00:03:08,690
‫afdruk ziet.

40
00:03:08,690 --> 00:03:12,620
‫Uw naam heeft zo'n invoerbelasting niet.

41
00:03:12,920 --> 00:03:14,510
‫Dus wat is hier aan de hand?

42
00:03:15,080 --> 00:03:24,020
‫Welnu, impliciet heeft elke lidfunctie een parameter die het huidige doel of de huidige instantie is.

43
00:03:24,620 --> 00:03:31,670
‫En u kunt dit verkrijgen door met de rechtermuisknop in de blauwdrukgebeurtenisgrafiek te klikken en zelf te typen.

44
00:03:32,510 --> 00:03:37,850
‫En je kunt zien dat er een knooppunt is dat een verwijzing naar zichzelf krijgt, en het creëert gewoon een zelfknooppunt zoals

45
00:03:37,850 --> 00:03:38,210
‫dit.

46
00:03:38,660 --> 00:03:46,340
‫En dan kunt u deze zelfobjectreferentie gebruiken om een van de eigenschappen van dit specifieke object te verkrijgen.

47
00:03:46,340 --> 00:03:53,240
‫Dus als we de naam van ons BP-projectiel willen bemachtigen, kun je de zelfreferentie gebruiken en

48
00:03:53,240 --> 00:03:56,900
‫de get-weergavenaam typen, wat we eerder hebben gedaan.

49
00:03:57,200 --> 00:04:00,980
‫En dan kunt u de weergavenaam aansluiten op onze printstring.

50
00:04:01,370 --> 00:04:09,650
‫Dus als we nu spelen en we schieten een nieuw projectiel af, kun je zien dat het de naam van

51
00:04:10,280 --> 00:04:17,180
‫het projectiel afdrukt en je kunt zien of elk nieuw projectiel een andere naam heeft, omdat het

52
00:04:17,180 --> 00:04:23,600
‫zelf waarnaar wordt verwezen door de lidfunctie is een ander zelf is een ander projectiel.

53
00:04:23,780 --> 00:04:31,490
‫We hebben dus geleerd dat self een knooppunt is dat beschikbaar is binnen een lidfunctie en dat altijd verwijst

54
00:04:31,490 --> 00:04:35,120
‫naar de specifieke huidige instantie die we gebruiken.

55
00:04:35,270 --> 00:04:40,160
‫Dus het hele punt van kijken naar lidfuncties in de eerste plaats, de reden dat we begonnen waren

56
00:04:40,160 --> 00:04:45,620
‫vanwege deze knooppunten in de niveaublauwdrukken, de manier waarop we de statische puree krijgen, we krijgen de voorwaartse vector en

57
00:04:45,620 --> 00:04:48,020
‫dan voegen we er een impuls aan toe.

58
00:04:48,620 --> 00:04:51,860
‫Deze hebben het gevoel dat ze op het BP-projectiel zouden moeten leven.

59
00:04:51,860 --> 00:04:55,100
‫En daarom wil ik je graag uitdagen om te doen.

60
00:04:55,430 --> 00:04:58,670
‫Dus dit is een beetje een ingewikkelde aanklacht, maar we komen aan het einde van de sectie.

61
00:04:58,670 --> 00:05:01,490
‫Daarom neem ik je stap voor stap mee.

62
00:05:02,120 --> 00:05:03,850
‫Dus ga een lanceringsfunctie maken.

63
00:05:04,030 --> 00:05:07,470
‫Schijn op het BP-project, ook gemaakt op de BP-projecten.

64
00:05:07,480 --> 00:05:09,720
‫Ik ga naar die plusdelen en voeg een nieuwe toe.

65
00:05:09,730 --> 00:05:10,840
‫Noem het lancering.

66
00:05:11,500 --> 00:05:18,670
‫Knip en plak vervolgens de knooppunten van de niveaublauwdrukken in deze nieuw gecreëerde functie van u en zorg

67
00:05:18,670 --> 00:05:21,850
‫ervoor dat u uitvoeringspinnen en dergelijke aansluit.

68
00:05:22,600 --> 00:05:24,820
‫Nu ga je proberen te compileren.

69
00:05:25,120 --> 00:05:30,190
‫We hebben dit niet vaak gedaan in blueprints, maar compileren stelt je gewoon in staat om

70
00:05:30,400 --> 00:05:36,730
‫de spelling van je code te controleren en ervoor te zorgen dat er geen fouten zijn die de Blueprint-compiler kan voorzien.

71
00:05:36,940 --> 00:05:43,570
‫Dus de manier waarop je dit doet, is door naar de knop linksboven te gaan en op compileren te drukken, en

72
00:05:43,570 --> 00:05:48,550
‫als er fouten zijn, verschijnen ze onderaan in het kleine venster met de naam compilerresultaten.

73
00:05:48,550 --> 00:05:53,470
‫Je kunt zien dat het compileren gelukt is, maar eventuele fouten zullen hier verschijnen en soms krijg je een klein

74
00:05:53,470 --> 00:05:57,010
‫beetje rood op een knooppunt om aan te geven waar de fout zit.

75
00:05:57,910 --> 00:06:03,550
‫En ik zou graag willen zien of je kunt proberen te begrijpen wat die fout zegt en proberen de fout op

76
00:06:03,760 --> 00:06:07,210
‫te lossen met behulp van het nieuwe zelfknooppunt waarover we hebben geleerd.

77
00:06:07,990 --> 00:06:15,730
‫En dan moet je doorgaan en die functie aanroepen vanuit de niveaublauwdrukken door de instantie weg te slepen zoals we

78
00:06:15,730 --> 00:06:22,570
‫deden voor ons zelfdrukknooppunt, van de instantie van het nieuwe projectiel te slepen dat is gemaakt vanaf het

79
00:06:22,570 --> 00:06:25,720
‫spawn-knooppunt en de startfunctie aan te roepen.

80
00:06:26,260 --> 00:06:28,150
‫Pauzeer de video en probeer het.

81
00:06:31,280 --> 00:06:31,970
‫Oké.

82
00:06:31,970 --> 00:06:32,780
‫Welkom terug.

83
00:06:32,840 --> 00:06:39,260
‫Dus ik ga naar ons BP-projectiel, druk op de plusknop naast functies in het mijn blauwdruk-paneel

84
00:06:39,260 --> 00:06:47,030
‫en typ launch om de functie een naam te geven waarmee we teruggaan naar onze niveaublauwdruk, knip de knooppunten

85
00:06:47,030 --> 00:06:51,440
‫uit en ga naar de BP-projectiel en plak ze erin.

86
00:06:52,130 --> 00:06:58,460
‫Nu moet ik de uitvoering van de lancering aansluiten om impuls toe te voegen en nu ga ik slaan,

87
00:06:58,490 --> 00:07:04,580
‫compileren en je ziet dat ik een fout krijg op de statische mash of een statische mash-node krijg.

88
00:07:05,120 --> 00:07:10,310
‫En als je in de compilerresultaten kijkt, staat er dat het een ongeldig doel gebruikt.

89
00:07:10,820 --> 00:07:15,240
‫Dus doel deze invoer hier is niet correct.

90
00:07:15,260 --> 00:07:24,470
‫Nu, zoals ik je heb aanbevolen, kun je met de rechtermuisknop klikken en zelf typen om een verwijzing naar jezelf te krijgen en in

91
00:07:24,470 --> 00:07:28,190
‫plaats daarvan dat zelf in het doel te brengen.

92
00:07:28,850 --> 00:07:34,430
‫Als je nu opnieuw op compileren drukt, kun je zien dat de fout is verdwenen en met

93
00:07:34,430 --> 00:07:43,250
‫succes is gecompileerd, want wat er aan de hand is, is dat het nu in staat is om de statische componenten van het huidige projectiel te krijgen.

94
00:07:43,490 --> 00:07:45,770
‫Deze startfunctie wordt aangeroepen.

95
00:07:46,550 --> 00:07:56,030
‫Dus als we nu teruggaan naar onze niveaublauwdrukken, kunnen we de uitvoerpin van onze spawn-acteur nemen en kunnen we de

96
00:07:56,030 --> 00:07:59,890
‫lancering typen om onze startfunctie op te roepen.

97
00:07:59,900 --> 00:08:06,050
‫Je kunt zien dat de uitvoeringspin automatisch voor mij is aangesloten en na de startfunctie kunnen we onze

98
00:08:06,050 --> 00:08:12,140
‫functie voor het afdrukken van je naam aansluiten als we dat willen, hoewel dat alleen voor foutopsporings- en

99
00:08:12,560 --> 00:08:18,920
‫demonstratiedoeleinden was en als je het uittest, je kan zien dat het nog steeds met succes wordt gelanceerd, behalve

100
00:08:18,920 --> 00:08:24,470
‫nu de code die zich bezighoudt met het lanceren van levens op het projectiel zelf.

101
00:08:24,560 --> 00:08:25,190
‫Goed spul.

102
00:08:25,190 --> 00:08:30,800
‫We hebben in deze lezing lidfuncties geleerd over een van de kernconcepten van objectgeoriënteerd programmeren.

103
00:08:30,950 --> 00:08:32,510
‫Ik zie je in de volgende.

