﻿1
00:00:03,980 --> 00:00:05,150
‫Hallo en welkom.

2
00:00:05,150 --> 00:00:11,810
‫In deze lezing gaan we onze puinhoop van blauwdrukken nemen en het netjes organiseren in functies, zodat

3
00:00:11,810 --> 00:00:17,600
‫we gemakkelijk kunnen lezen en begrijpen wat er gaande is in onze Blueprint Event-grafiek.

4
00:00:17,870 --> 00:00:19,550
‫Laten we erin duiken en kijken hoe we dit kunnen doen.

5
00:00:20,630 --> 00:00:25,970
‫Als we nu uitzoomen op onze gebeurtenisgrafiek, kunnen we zien dat het erg luidruchtig begint te worden.

6
00:00:25,970 --> 00:00:28,580
‫Ik kan ook een paar knooppunten zien die nergens op zijn aangesloten.

7
00:00:28,580 --> 00:00:33,740
‫Er is een munitieknooppunt voor ophalen, dat ik ga verwijderen en een munitieknooppunt instellen, maar je kunt zien dat het erg

8
00:00:33,740 --> 00:00:34,310
‫luidruchtig wordt.

9
00:00:34,310 --> 00:00:36,800
‫Het wordt steeds moeilijker te begrijpen wat hier aan de hand is.

10
00:00:36,830 --> 00:00:45,320
‫Nu, een typische oplossing die mensen doen, is zeggen: Nou, dit blok knooppunten hier gaat helemaal over het spawnen van het

11
00:00:45,320 --> 00:00:45,950
‫projectiel.

12
00:00:45,950 --> 00:00:47,090
‫Deze kan ik dus selecteren.

13
00:00:47,300 --> 00:00:54,020
‫Ik kan op de C-toets drukken en er wordt een blok omheen geplaatst, een commentaarblok genoemd.

14
00:00:54,020 --> 00:01:02,300
‫En dan zou ik spawn-projectielen kunnen typen en dat laat me weten wat dat codeblok aan het doen is.

15
00:01:02,300 --> 00:01:05,180
‫Dat is zeker een manier om je code te ordenen.

16
00:01:05,540 --> 00:01:12,530
‫Naar mijn mening is dit echter niet de beste manier en we hebben betere tools om dit, functies genaamd, te doen.

17
00:01:12,710 --> 00:01:14,180
‫Dus wat alle functies?

18
00:01:14,750 --> 00:01:20,450
‫Functies voeren blauwdrukblokken uit en zorgen ervoor dat onze games dingen doen.

19
00:01:20,480 --> 00:01:25,100
‫Veel knooppunten die door Unreal worden geleverd, zijn eigenlijk al functies.

20
00:01:25,430 --> 00:01:27,350
‫Deze zijn we dus tegengekomen.

21
00:01:27,350 --> 00:01:33,140
‫Wanneer je gaat inzoomen, bijvoorbeeld op onze spawn-acteur projectielknooppunt, is dat een functie.

22
00:01:33,140 --> 00:01:39,380
‫Als we kijken naar impuls toevoegen, dat is een functie voor in feite bijna elk van deze knooppunten, zelfs dingen

23
00:01:39,380 --> 00:01:44,180
‫als een actieve vector die geen uitvoeringspedaal heeft, is niet blauw, is ook een functie

24
00:01:44,180 --> 00:01:50,870
‫die je kunt zien omdat het een klein f-symbool linksboven dat staat voor functie, maar we zijn niet beperkt tot de

25
00:01:50,870 --> 00:01:52,340
‫functies die Unreal biedt.

26
00:01:52,340 --> 00:01:56,810
‫We kunnen ook onze eigen functies maken, en het is heel gemakkelijk om in blauwdrukken te doen.

27
00:01:57,140 --> 00:02:02,570
‫Ze stellen ons in staat om georganiseerd te blijven en ze stellen ons in staat om codeblokken opnieuw te gebruiken.

28
00:02:02,570 --> 00:02:06,320
‫Dus dat is beter dan een opmerking, want een opmerking moet je kopiëren en plakken.

29
00:02:06,590 --> 00:02:12,470
‫Terwijl een functie ons in staat stelt om één codeblok te delen tussen meerdere gebruiksplaatsen.

30
00:02:12,710 --> 00:02:19,010
‫Laten we eens kijken hoe we zoiets kunnen omzetten in een codeblok.

31
00:02:19,700 --> 00:02:24,530
‫Wel, we kunnen het commentaarblok eerst verwijderen, omdat ik denk dat dat niet nodig is.

32
00:02:24,530 --> 00:02:31,280
‫In plaats daarvan ga ik alle knooppunten selecteren van krijgt spelen a -- helemaal om impuls toe te voegen, klik er

33
00:02:31,280 --> 00:02:34,910
‫met de rechtermuisknop op en selecteer samenvouwen om te functioneren.

34
00:02:35,480 --> 00:02:42,860
‫En dat creëert een nieuw blok en vervangt al die eerdere knooppunten die er eerder waren.

35
00:02:42,870 --> 00:02:46,250
‫Nu ga ik deze functie krijgen, een naam die je kunt zien in het linkerdeelvenster.

36
00:02:46,610 --> 00:02:53,840
‫Het heeft een nieuwe functie gemaakt onder de functiesectie in het mijn blauwdruk-paneel en het heeft het voor

37
00:02:53,840 --> 00:02:59,450
‫mij geselecteerd om automatisch te hernoemen, omdat we deze functies zeker, zeker moeten hernoemen

38
00:02:59,450 --> 00:03:01,970
‫en ik ga het spawn-projectiel noemen.

39
00:03:02,120 --> 00:03:09,380
‫En een goede naamgeving is absoluut essentieel bij het programmeren, omdat code in wezen draait om communicatie.

40
00:03:09,590 --> 00:03:14,540
‫We proberen met onszelf te communiceren zodat we kunnen begrijpen wat we hebben geschreven.

41
00:03:14,780 --> 00:03:17,180
‫We proberen in de toekomst met onszelf te communiceren.

42
00:03:17,180 --> 00:03:21,650
‫Als we terugkomen op dit project en ik ben vergeten waarom we het op een bepaalde manier hebben geschreven, en als

43
00:03:21,650 --> 00:03:25,180
‫je in teams werkt, probeer je ook met de rest van je team te communiceren.

44
00:03:25,370 --> 00:03:30,920
‫Sommigen zeggen dat een goede maatstaf voor codekwaliteit de waarde per minuut is.

45
00:03:31,220 --> 00:03:36,440
‫Dus als je een stukje code aan het lezen bent en je gaat, wat maakt het uit, 50 keer per minuut, dat is behoorlijk

46
00:03:36,440 --> 00:03:41,000
‫slechte code als je het leest en alleen gaat, wat maakt het uit, een of twee keer per minuut, dan

47
00:03:41,000 --> 00:03:44,900
‫dat is waarschijnlijk een behoorlijk goede code en je zult altijd wat krijgen, wat maakt het uit?

48
00:03:44,900 --> 00:03:49,010
‫Dus we proberen alleen het aantal dat functioneert te verminderen.

49
00:03:49,220 --> 00:03:51,590
‫Cruciaal is dat we de neiging hebben om functies als werkwoorden te benoemen.

50
00:03:51,590 --> 00:03:58,040
‫Er zijn enkele uitzonderingen op deze regel waar we het later over zullen hebben, maar meestal zijn functies dingen

51
00:03:58,040 --> 00:03:59,210
‫die iets doen.

52
00:03:59,210 --> 00:04:06,200
‫Dus we gebruiken doe-woorden en als je niet zeker weet hoe je deze functie moet noemen, als je in een team werkt, kun je

53
00:04:06,200 --> 00:04:11,360
‫gewoon met iemand anders praten en hen vragen wat ze denken dat je het moet noemen en

54
00:04:11,360 --> 00:04:13,970
‫wat voor soort dingen voor hen zinvol zijn.

55
00:04:13,970 --> 00:04:19,700
‫Je merkt vaak dat je zo diep in een probleem zit dat je niet kunt bedenken hoe je erover kunt praten.

56
00:04:19,760 --> 00:04:26,390
‫Dus je vraagt je misschien af: waar is al mijn code gebleven toen ik deze spawn-projectielfunctie

57
00:04:26,390 --> 00:04:26,930
‫maakte?

58
00:04:27,440 --> 00:04:34,580
‫Welnu, u kunt teruggaan naar dat detail van hoe deze functie daadwerkelijk is geïmplementeerd door erop te dubbelklikken in de

59
00:04:34,580 --> 00:04:40,640
‫gebeurtenisgrafiek of erop te klikken in het tabblad Mijn blauwdrukken of erop te dubbelklikken op het tabblad

60
00:04:40,670 --> 00:04:41,780
‫Mijn blauwdrukken.

61
00:04:41,780 --> 00:04:48,800
‫En je kunt zien dat al onze knooppunten hier nog steeds aanwezig zijn, ze staan nu op een

62
00:04:49,040 --> 00:04:56,180
‫apart tabblad, zodat je terug kunt gaan naar je evenementgrafiek-tabblad of je kunt duiken naar het Spawn-projectiel-tabblad dat precies dat

63
00:04:56,180 --> 00:04:57,740
‫ene laat zien functie.

64
00:04:58,730 --> 00:05:04,880
‫En je kunt zien dat er hier een nieuw knooppunt is, dit kleine paarse knooppunt, dat het toegangspunt is tot onze

65
00:05:04,880 --> 00:05:05,390
‫functie.

66
00:05:05,390 --> 00:05:09,740
‫Dit zegt dat dit is wat we moeten doen wanneer de functie start.

67
00:05:09,740 --> 00:05:10,970
‫Het is gewoon een instappunt.

68
00:05:11,240 --> 00:05:16,850
‫En wanneer het wordt aangeroepen, zal dat knooppunt alle andere knooppunten binnen onze functie activeren en

69
00:05:16,850 --> 00:05:17,570
‫activeren.

70
00:05:17,720 --> 00:05:19,690
‫Dus terug naar de gebeurtenisgrafiek en.

71
00:05:19,900 --> 00:05:25,690
‫Uitzoomen, misschien wat anodes samenbrengen nu we onze knooppuntgrafiek zo veel kleiner en gemakkelijker leesbaar

72
00:05:25,690 --> 00:05:26,590
‫hebben gemaakt.

73
00:05:26,950 --> 00:05:33,520
‫Ik denk dat er hier nog een paar kandidaten zijn om functies te schrappen en dingen te vervangen.

74
00:05:34,030 --> 00:05:38,260
‫Een daarvan zou zijn waar we munitie aan het printen zijn.

75
00:05:38,410 --> 00:05:43,720
‫Dus in dit geval is het printen van munitie iets dat we op twee plaatsen doen.

76
00:05:43,720 --> 00:05:47,600
‫We doen het in beginspel en we doen het in een spawn-projectiel.

77
00:05:48,310 --> 00:05:53,920
‫En dan de andere plaats, het andere, stuk functionaliteit dat we in een functie zouden kunnen extraheren, zou

78
00:05:54,310 --> 00:06:01,150
‫zijn waar we de munitie verminderen die in plaats daarvan in een functie voor het verminderen van munitie zou kunnen worden gestopt.

79
00:06:01,240 --> 00:06:09,490
‫Dus net voordat ik je de uitdaging stel, wil ik het conversieknooppunt verwijderen en het tekenreeksknooppunt

80
00:06:09,670 --> 00:06:15,240
‫afdrukken na het spawn-projectiel, omdat dit de zaken gaat compliceren.

81
00:06:15,250 --> 00:06:21,320
‫Ik zou de functionaliteit van bovenaf willen kopiëren, zodat ze er allebei precies hetzelfde uitzien.

82
00:06:21,340 --> 00:06:29,140
‫Dus als we de drie knooppunten van Begin Play kopiëren en ze hieronder plakken en de uitvoeringspinnen verbinden, dan kun je

83
00:06:29,140 --> 00:06:35,020
‫zien dat we precies dezelfde set knooppunten hebben, dezelfde functionaliteit hadden tussen de twee, en er

84
00:06:35,020 --> 00:06:39,910
‫is geen verwarring wanneer we komen om dit in functie te extraheren.

85
00:06:39,970 --> 00:06:43,200
‫Daarom wil ik je uitdagen om nog wat functies te maken.

86
00:06:43,210 --> 00:06:47,090
‫De eerste die ik zou aanraden om te doen, is het verminderen van munitie.

87
00:06:47,110 --> 00:06:51,820
‫Dus de drie knooppunten nemen die betrokken zijn bij het verminderen van munitie, die extraheren in een functie en ze een

88
00:06:51,820 --> 00:06:52,510
‫naam geven.

89
00:06:53,020 --> 00:06:55,990
‫En dan is de tweede print munitie.

90
00:06:56,020 --> 00:07:03,220
‫Dus daar ga je de functionaliteit van het verkrijgen, converteren en afdrukken van de munitie extraheren

91
00:07:03,220 --> 00:07:05,530
‫in een enkele functie.

92
00:07:05,860 --> 00:07:11,710
‫En omdat we twee sites hebben waar we munitie printen, wil je er een verwijderen en in plaats

93
00:07:11,710 --> 00:07:16,750
‫daarvan de functie gebruiken, wat je kunt doen door te slepen vanuit het mijn blauwdruk-paneel.

94
00:07:17,380 --> 00:07:22,720
‫En dan hebben we eindelijk een paar welkomstberichten, output van welkomstberichtknooppunten.

95
00:07:22,720 --> 00:07:26,800
‫U kunt deze ook extraheren in een functie voor het afdrukken van welkomstberichten.

96
00:07:27,220 --> 00:07:28,900
‫Pauzeer de video en probeer het.

97
00:07:32,110 --> 00:07:32,700
‫Oké.

98
00:07:32,710 --> 00:07:33,430
‫Welkom terug.

99
00:07:33,550 --> 00:07:37,390
‫Dus we gaan eerst onze verminderde munitie halen.

100
00:07:37,390 --> 00:07:41,590
‫Er zijn dus drie knooppunten bij betrokken die met de rechtermuisknop op de functie zullen klikken.

101
00:07:42,190 --> 00:07:47,710
‫Dan gaan we het munitie verminderen noemen en dat is vrij eenvoudig.

102
00:07:47,710 --> 00:07:51,910
‫Dus spawn projectielen, verminder munitie en dan printen we de munitie.

103
00:07:51,910 --> 00:07:58,180
‫Dus laten we de drie knooppunten nemen, de get convert en print string en we gaan met de rechtermuisknop

104
00:07:58,180 --> 00:08:01,750
‫op de functie klikken en deze ene print munitie noemen.

105
00:08:02,560 --> 00:08:08,530
‫Zoals ik al zei, we hebben deze functionaliteit op twee plaatsen herhaald, dus we zullen

106
00:08:08,530 --> 00:08:16,150
‫verwijderen waar het dit doet en beginnen met plaat en gewoon print munitie uit onze functielijst slepen en de uitvoeringspinnen

107
00:08:16,150 --> 00:08:19,570
‫verbinden zodat het loopt na onze tekenreeks afdrukken.

108
00:08:20,260 --> 00:08:25,480
‫Dat brengt me bij de laatste functie die ik wil maken, waarvan we zeiden dat het welkomstberichten voor afdrukken zal noemen.

109
00:08:25,690 --> 00:08:27,610
‫Dus ik ga de twee afdrukreeksen selecteren.

110
00:08:27,610 --> 00:08:34,240
‫Ik moet samenvouwen beginnen om te functioneren en het welkomstberichten afdrukken te noemen.

111
00:08:34,420 --> 00:08:42,220
‫En dit knooppunt kunnen we nu al onze knooppunten herschikken om het veel gemakkelijker te maken om dit allemaal in één scherm vol

112
00:08:42,220 --> 00:08:43,130
‫te lezen.

113
00:08:43,150 --> 00:08:49,900
‫Je kunt zien dat het nu veel gemakkelijker is om de functionaliteit van ons spel te begrijpen, omdat het

114
00:08:49,900 --> 00:08:56,350
‫allemaal op één scherm past en mooi op een vergelijkbaar niveau van abstractie en begrip is gebracht.

115
00:08:56,350 --> 00:09:02,800
‫En dit is wat we zelfdocumenterende code zouden noemen, omdat het code is die geen commentaar of documentatie nodig heeft om

116
00:09:02,800 --> 00:09:04,690
‫uit te leggen wat het doet.

117
00:09:04,930 --> 00:09:06,850
‫Het leest gewoon als Engels.

118
00:09:07,210 --> 00:09:07,840
‫Goed spul.

119
00:09:08,140 --> 00:09:09,880
‫Ik zie je in de volgende lezing.

