﻿1
00:00:04,380 --> 00:00:05,280
‫Hallo en welkom.

2
00:00:05,280 --> 00:00:12,510
‫In deze lezing gaan we toegang krijgen tot de overlappende acteurs in iets dat een array

3
00:00:12,510 --> 00:00:19,800
‫wordt genoemd, zodat we de acteurs die we in dit volume zien volledig vanuit C++ kunnen afdrukken.

4
00:00:19,800 --> 00:00:21,300
‫Laten we erin duiken en kijken hoe het gedaan is.

5
00:00:22,480 --> 00:00:30,700
‫Laten we ons, net als in eerdere analogieën, voorstellen dat een type of een variabele een vak is waarin we een waarde plaatsen.

6
00:00:31,150 --> 00:00:35,250
‫Wat gebeurt er als we niet weten hoeveel waarden we willen opslaan?

7
00:00:35,260 --> 00:00:36,640
‫We kunnen veel variabelen maken.

8
00:00:36,640 --> 00:00:39,430
‫Als we wisten dat we er vijf zouden hebben, zouden we vijf variabelen kunnen maken.

9
00:00:39,700 --> 00:00:45,670
‫Maar wat als we iets hadden dat onvoorspelbaar veel is, zoals het aantal acteurs dat we op

10
00:00:46,170 --> 00:00:51,010
‫ons A-niveau hebben, of de acteurs die overlappen met een bepaald triggervolume?

11
00:00:51,490 --> 00:01:00,130
‫In dit geval moeten we een nieuw gegevenstype gebruiken dat een T-array wordt genoemd in Unreal en in feite een T-array van een

12
00:01:00,130 --> 00:01:01,200
‫bepaald type.

13
00:01:01,210 --> 00:01:08,560
‫Ook hier zien we deze punthaken die, zoals we eerder zeiden, tijdparameters voor het compileren zijn.

14
00:01:08,980 --> 00:01:14,770
‫En deze keer nemen we opnieuw een type op dat ons vertelt welk type we een array kunnen opslaan.

15
00:01:14,770 --> 00:01:21,310
‫Een array is als een variabele, behalve dat het meerdere vakken heeft en het aantal vakken dat we hebben

16
00:01:21,670 --> 00:01:22,750
‫kan verschillen.

17
00:01:22,750 --> 00:01:23,920
‫Als we een spelletje spelen.

18
00:01:23,920 --> 00:01:24,910
‫Het kan veranderen.

19
00:01:24,910 --> 00:01:30,880
‫We kunnen meer of minder toevoegen naarmate we door het spel gaan, als dingen beginnen te overlappen met meer vakken toevoegen, als

20
00:01:30,880 --> 00:01:33,640
‫dingen de overlappende zone verlaten, nemen we ze weg.

21
00:01:33,880 --> 00:01:37,270
‫En zoals ik al zei, dit is een parameter binnen deze.

22
00:01:38,270 --> 00:01:39,260
‫Punthaken.

23
00:01:39,680 --> 00:01:45,350
‫En dus zouden we bijvoorbeeld een T-array van ints kunnen hebben, die verschillende gehele getallen in die vakken

24
00:01:45,350 --> 00:01:45,980
‫zou opslaan.

25
00:01:46,310 --> 00:01:52,670
‫We zouden een hele reeks acteursaanwijzers kunnen hebben, en dit zou de aanwijzers in de vakken opslaan, die

26
00:01:52,670 --> 00:01:55,610
‫zouden verwijzen naar acteurs in de wereld.

27
00:01:55,940 --> 00:02:01,190
‫En zoals je kunt zien, kunnen ze elkaar zelfs overlappen, zodat sommige van deze aanwijzingen naar dezelfde acteurs wijzen.

28
00:02:01,490 --> 00:02:04,580
‫Nu oefenen dat zou niet erg handig zijn, maar het is zeker mogelijk.

29
00:02:04,850 --> 00:02:10,790
‫Dus ik wil de documentatie van de primitieve component opnieuw bekijken, want wat

30
00:02:10,790 --> 00:02:16,450
‫ik hier zoek, is een functie met de naam overlappende acteurs ophalen.

31
00:02:16,460 --> 00:02:20,930
‫En als je kijkt naar de functie 'Overlappende acteurs ophalen', daar zijn een aantal versies van.

32
00:02:21,590 --> 00:02:26,570
‫Maar degene die voor mij het meest interessant is, is de tweede.

33
00:02:27,200 --> 00:02:29,030
‫Het heeft geen retourwaarde.

34
00:02:29,030 --> 00:02:30,440
‫Het is een ongeldige retourwaarde.

35
00:02:30,440 --> 00:02:38,690
‫Maar je kunt zien dat de eerste parameter hier een reeks actor-pointers is met een ampersand aan het einde, wat

36
00:02:38,690 --> 00:02:43,640
‫betekent dat dit hele ding een verwijzing is naar een t-array.

37
00:02:43,640 --> 00:02:46,280
‫Merk nu op dat het geen constante referentie is.

38
00:02:46,700 --> 00:02:51,860
‫We kunnen dus aannemen dat deze parameter eigenlijk een out-parameter is.

39
00:02:51,860 --> 00:03:00,050
‫Het geeft ons het resultaat van de overlappende actoren en het vertelt ons welke actoren momenteel overlappen

40
00:03:00,290 --> 00:03:02,270
‫met onze primitieve componenten.

41
00:03:02,540 --> 00:03:06,500
‫Nu is het zo dat onze dooscomponent een primitieve component is.

42
00:03:06,890 --> 00:03:12,440
‫Dus onze triggercomponent is ook een projectcomponent en ik zou toegang hebben tot deze functie.

43
00:03:13,490 --> 00:03:18,140
‫Er is hier nog een tweede argument, maar daar hoeven we ons geen zorgen over te maken, want het heeft eigenlijk

44
00:03:18,140 --> 00:03:19,520
‫een standaardwaarde als we het gebruiken.

45
00:03:19,730 --> 00:03:25,820
‫Dus laten we doorgaan en proberen een reeks actieve wijzers te bemachtigen en in te vullen.

46
00:03:26,150 --> 00:03:28,490
‫We gaan in op de truccomponent, CPP.

47
00:03:28,520 --> 00:03:31,340
‫We gaan naar de tick-componenten.

48
00:03:31,820 --> 00:03:38,150
‫En hier gaan we een lege t-array maken die we kunnen vullen met deze functie.

49
00:03:38,300 --> 00:03:48,080
‫Dus de syntaxis is t array open punthaken een acteurster om te zeggen dat we een t array van actoraanwijzers hebben,

50
00:03:48,080 --> 00:03:55,070
‫sluit de punthaken en dan kunnen we deze variabele een naam geven als actoren.

51
00:03:55,370 --> 00:04:05,510
‫Dan zouden we bellen om overlappende acteurs te krijgen en we zouden passeren in de acteursreeks.

52
00:04:06,650 --> 00:04:06,890
‫Nutsvoorzieningen.

53
00:04:06,890 --> 00:04:11,630
‫Ik weet niet waarom ze dit niet gewoon doorgeven als een retourwaarde, maar.

54
00:04:12,780 --> 00:04:13,380
‫Daar ga je.

55
00:04:13,380 --> 00:04:18,150
‫Het geeft ons de mogelijkheid om die onze parameters een beetje meer te gebruiken.

56
00:04:18,330 --> 00:04:19,470
‫Nu, dat is allemaal goed en wel.

57
00:04:19,500 --> 00:04:22,110
‫We hebben een aantal acteurs in een array.

58
00:04:22,650 --> 00:04:24,090
‫Ze hebben een variabele lengte.

59
00:04:24,090 --> 00:04:25,080
‫Het kunnen er nogal wat zijn.

60
00:04:25,080 --> 00:04:26,310
‫Er kan nul zijn.

61
00:04:26,820 --> 00:04:29,490
‫Wat doen we met dergelijke arrays?

62
00:04:29,640 --> 00:04:33,980
‫Welnu, we kunnen opvragen hoeveel items zich in de array bevinden.

63
00:04:33,990 --> 00:04:40,980
‫U kunt array dot num haakjes gebruiken en dat kan een geheel getal retourneren dat u vertelt hoeveel items zich in de array

64
00:04:40,980 --> 00:04:41,550
‫bevinden.

65
00:04:41,580 --> 00:04:48,570
‫Dus in deze specifieke array zouden we kunnen zeggen dat er vijf zijn, en dan hebben we toegang tot de items

66
00:04:48,570 --> 00:04:51,780
‫binnen die array door deze vierkante haken te gebruiken.

67
00:04:52,410 --> 00:04:55,830
‫En dan vertelt het nummer dat u tussen de vierkante haken doorgeeft, welk item u moet krijgen.

68
00:04:56,250 --> 00:05:02,610
‫En het is een gebruikelijke conventie in veel programmeertalen dat we in arrays vanaf nul beginnen te tellen.

69
00:05:02,940 --> 00:05:09,480
‫Dus het nulde element van een array is het eerste, het ene element van een array is het tweede, enz.

70
00:05:09,690 --> 00:05:14,940
‫En dus eindig je met het laatste element dat altijd één minder is dan het aantal elementen in de array.

71
00:05:15,750 --> 00:05:17,490
‫Dus hoe kunnen we deze kennis gebruiken?

72
00:05:17,550 --> 00:05:24,330
‫We kunnen bijvoorbeeld de overlappende acteurs alleen afdrukken als er meer dan één is.

73
00:05:24,690 --> 00:05:26,030
‫Dus hoe zouden we dit doen?

74
00:05:26,040 --> 00:05:38,070
‫We zouden een if-statement plaatsen dat zegt dat als de acteurs punt aantal haakjes groter is dan nul, we hier iets kunnen doen, zoals toegang krijgen

75
00:05:38,070 --> 00:05:46,470
‫tot het nul-element van onze acteurs, omdat we weten dat als het groter is dan nul, er moet zijn

76
00:05:46,470 --> 00:05:50,100
‫op daar zit tenminste één element in.

77
00:05:50,100 --> 00:05:54,480
‫Dus de nulde elementen van deze array moeten iets bevatten.

78
00:05:54,720 --> 00:05:59,880
‫We konden niet garanderen dat het eerste element, het ene element van de array iets in heeft of het

79
00:05:59,880 --> 00:06:01,440
‫twee element iets in heeft.

80
00:06:01,680 --> 00:06:06,840
‫We zouden moeten controleren of we genoeg items in de array hebben om dat te doen, maar we weten

81
00:06:06,840 --> 00:06:08,550
‫zeker dat hier de eerste is.

82
00:06:08,730 --> 00:06:12,510
‫Dus laten we je uitdagen om de eerste overlappende actor uit die array af te drukken.

83
00:06:12,780 --> 00:06:16,470
‫Gebruik de array om de aanwijzer te krijgen met behulp van die vierkante haken.

84
00:06:16,770 --> 00:06:22,200
‫Dan ga je die aanwijzer gebruiken om te bellen, acteur, naam of label te krijgen, en dan ga

85
00:06:22,200 --> 00:06:23,280
‫je dat uitprinten.

86
00:06:23,580 --> 00:06:24,870
‫Pauzeer de video en probeer het.

87
00:06:28,250 --> 00:06:28,570
‫Oké.

88
00:06:28,580 --> 00:06:29,390
‫Welkom terug.

89
00:06:29,750 --> 00:06:34,460
‫Dus we kunnen krijgen dat we de aanwijzer hier hebben gekregen met behulp van deze vierkante haken.

90
00:06:34,820 --> 00:06:41,090
‫En ik ga dan meteen de naam te pakken krijgen door de pijl-operator te gebruiken en get actor,

91
00:06:41,240 --> 00:06:43,310
‫naam of label te bellen.

92
00:06:44,180 --> 00:06:50,030
‫En ik ga dat in een F-tekenreeksvariabele plaatsen met de naam acteur.

93
00:06:50,240 --> 00:06:56,480
‫Dan gaan we een U-log maken, die we de overlappende dubbele punt gaan noemen.

94
00:06:56,480 --> 00:06:58,130
‫En dan procent s.

95
00:06:58,460 --> 00:07:03,440
‫En dan zou het tweede argument hier een asterisk moeten zijn, de naam van de acteur.

96
00:07:03,740 --> 00:07:09,470
‫Dan kunnen we opnieuw compileren, in onze output log docket springen in de lay-out.

97
00:07:09,620 --> 00:07:16,070
‫Dan gaan we de geheime muur van BP openen, want ik wil niet deze string afdrukken die dingen in

98
00:07:16,070 --> 00:07:17,210
‫de war brengt.

99
00:07:17,210 --> 00:07:23,960
‫In Blueprint doen we dit nu vanuit C++, dus laten we overgaan naar het hitspel op kerkerniveau.

100
00:07:25,190 --> 00:07:28,430
‫En natuurlijk overlapt niets die acteur op dit moment.

101
00:07:28,820 --> 00:07:31,520
‫Dus wat gebeurt er als we naar binnen gaan?

102
00:07:32,060 --> 00:07:36,080
‫Je kunt zien dat het meteen begint te printen, dat we de BP-speler overlappen.

103
00:07:36,500 --> 00:07:37,520
‫Fantastisch spul.

104
00:07:37,820 --> 00:07:40,130
‫Wat als we in plaats daarvan de waterspuwer zouden gaan halen?

105
00:07:40,370 --> 00:07:43,780
‫Breng het naar de alkoof, steek het erin en klaar.

106
00:07:43,790 --> 00:07:46,160
‫Hij zegt dat het het beeld van de waterspuwer overlapt.

107
00:07:46,700 --> 00:07:47,210
‫Goed spul.

108
00:07:47,210 --> 00:07:55,280
‫We hebben dus geleerd hoe we een t-array kunnen gebruiken om een lijst met acteurs te krijgen en om uit te vinden hoeveel dingen

109
00:07:55,280 --> 00:08:00,770
‫in die lijst staan en hoe we een bepaald item uit die lijst kunnen bemachtigen.

110
00:08:01,070 --> 00:08:05,600
‫In de volgende lezing gaan we kijken naar enkele programmeerstructuren die ons in staat

111
00:08:05,810 --> 00:08:10,520
‫stellen om te gaan met variabele aantallen dingen om een variabel aantal taken uit te voeren.

112
00:08:10,790 --> 00:08:11,600
‫Ik zie je daar.

