﻿1
00:00:04,430 --> 00:00:05,660
‫Hallo en welkom.

2
00:00:05,660 --> 00:00:11,810
‫In deze lezing gaan we kijken naar vectoren en in het algemeen meer gecompliceerde dingen zoals structs in

3
00:00:11,810 --> 00:00:19,610
‫C++ en hoe we toegang kunnen krijgen tot de afzonderlijke delen om deze zowel in te stellen als uit een struct te halen.

4
00:00:19,790 --> 00:00:20,420
‫Laten we erin duiken.

5
00:00:21,320 --> 00:00:27,770
‫We hebben dus geleerd om met basisgegevenstypen in C++ om te gaan en variabelen te creëren en eraan toe te wijzen en er zelfs

6
00:00:27,770 --> 00:00:29,630
‫wat elementaire rekenkunde mee te doen.

7
00:00:29,990 --> 00:00:35,330
‫Maar hoe zit het als we meer gecompliceerde typen zoals vectoren en transformaties willen aanpakken?

8
00:00:35,930 --> 00:00:38,030
‫Nou, het proces is eigenlijk erg vergelijkbaar.

9
00:00:38,030 --> 00:00:41,600
‫Laten we beginnen met het wissen van een deel van de testcode die we al hebben.

10
00:00:41,600 --> 00:00:43,550
‫Ik ga al mijn eigenschappen verwijderen.

11
00:00:43,550 --> 00:00:46,460
‫Voor mij is dat regel 26 tot 51.

12
00:00:47,030 --> 00:00:54,290
‫En ik ga ook naar het C++-bestand en verwijder regel 19 tot 23, waar ik al het werk doe met

13
00:00:54,290 --> 00:00:56,870
‫de variabelen die ik zojuist heb verwijderd.

14
00:00:56,870 --> 00:01:01,550
‫Dus nu is Begin Play helemaal leeg en zijn we weer terug bij af.

15
00:01:02,660 --> 00:01:06,290
‫Dus wat ik nu wil doen, is een nieuwe eigenschap toevoegen.

16
00:01:06,290 --> 00:01:15,980
‫Dus alle hoofdletters kunnen weer ergens worden bewerkt en ik ga dit het type F-vector geven, let op de hoofdletter F, hoofdletter V en dit

17
00:01:15,980 --> 00:01:22,250
‫is hoe we omgaan met de vectoren die we hebben behandeld in Blueprint zijn dezelfde vectoren

18
00:01:22,250 --> 00:01:27,410
‫onder de oppervlak, maar dit is hoe we het in C++ typen.

19
00:01:27,410 --> 00:01:33,680
‫De F die eraan voorafgaat, laat ons gewoon weten dat dit een structuur is op dezelfde manier als de A die voorafgaat aan

20
00:01:33,680 --> 00:01:34,580
‫een bewegend platform.

21
00:01:34,580 --> 00:01:36,800
‫Laat ons weten dat dat een acteur is.

22
00:01:37,040 --> 00:01:38,360
‫Dat is geen C++ ding.

23
00:01:38,360 --> 00:01:43,970
‫Dat is een onwerkelijke naamgevingsconventie voor het benoemen van de verschillende klassen, structs en typen.

24
00:01:44,720 --> 00:01:47,240
‫Dus wat we dan gaan doen is deze variabele hun naam geven.

25
00:01:47,240 --> 00:01:50,840
‫En dit werkt precies hetzelfde als bij een praalwagen of een evenement.

26
00:01:51,170 --> 00:01:53,540
‫We kunnen het bijvoorbeeld mijn float noemen.

27
00:01:53,540 --> 00:01:54,770
‫Het hoeft geen spaties te hebben.

28
00:01:55,280 --> 00:01:59,060
‫En als we hier een puntkomma aan het einde van de regel zouden plaatsen, dan is dat het.

29
00:01:59,060 --> 00:02:06,110
‫We hebben een nieuwe variabele gedeclareerd die zichtbaar zal zijn in ons detailvenster in de editor, maar dat is niet genoeg

30
00:02:06,110 --> 00:02:07,040
‫voor mij.

31
00:02:07,040 --> 00:02:13,760
‫Ik zou dit eigenlijk een standaardwaarde willen geven die verschilt van de standaard 000.

32
00:02:14,150 --> 00:02:17,630
‫Om dat te doen, moeten we onze woordenlijst bijwerken met een nieuwe term.

33
00:02:17,630 --> 00:02:24,830
‫We hebben een constructor nodig, wat in wezen iets is in C++ dat een nieuwe struct of klasse A-waarde maakt.

34
00:02:25,280 --> 00:02:33,050
‫Dus als we een constructor voor de vector zouden maken, zou dit werken als we een waarde willen toewijzen zodat

35
00:02:33,050 --> 00:02:34,640
‫we gelijken bereiken.

36
00:02:34,640 --> 00:02:40,520
‫En typisch als we te maken hadden met gehele getallen of floats, konden we gewoon iets gebruiken als een

37
00:02:40,520 --> 00:02:46,040
‫of een waar die waren ingebouwd in waarden waarmee we de waarde van die basistypen konden instellen.

38
00:02:46,400 --> 00:02:53,090
‫Maar als we meer uitgebreide typen hebben, zoals een struct, moeten we de constructor gebruiken en de constructor

39
00:02:53,090 --> 00:02:59,120
‫zal altijd dezelfde naam hebben als het gegevenstype, dus de vector wordt precies hetzelfde gespeld.

40
00:02:59,450 --> 00:03:05,870
‫En dan open je enkele haakjes en binnen de haakjes geef je de waarden die je wilt.

41
00:03:05,870 --> 00:03:08,570
‫Dus X, Y en Z vormen samen een vector.

42
00:03:08,570 --> 00:03:14,990
‫Dus we kunnen één, twee en drie hebben, allemaal gescheiden door komma's, en dan sloten we de haakjes en plaatsten een puntkomma

43
00:03:14,990 --> 00:03:16,760
‫aan het einde van de regel.

44
00:03:17,090 --> 00:03:23,420
‫En dat geeft een standaardwaarde van één, twee en drie in de X, Y en Z voor deze vector.

45
00:03:23,420 --> 00:03:24,290
‫Laten we het eens proberen.

46
00:03:24,680 --> 00:03:27,200
‫Ga terug naar Unreal en druk op de compileerknop.

47
00:03:27,680 --> 00:03:34,520
‫En als dat eenmaal met succes is voltooid, kunnen we ervoor zorgen dat we de Moving Platform Act hebben geselecteerd in ons

48
00:03:34,520 --> 00:03:40,010
‫overzicht en het detailvenster bekijken en zien dat we inderdaad een nieuwe eigenschap hebben met de naam

49
00:03:40,010 --> 00:03:40,700
‫My Float.

50
00:03:40,700 --> 00:03:47,180
‫De andere zijn weggenomen en de waarden in de verschillende posities, X, Y en Z, zijn één, twee en

51
00:03:47,180 --> 00:03:49,430
‫drie, precies zoals we hadden verwacht.

52
00:03:50,180 --> 00:03:51,050
‫Dus dat is geweldig.

53
00:03:51,200 --> 00:03:57,560
‫Maar wat als ik deze waarden zou willen bemachtigen en ze misschien in een ander pand zou willen plakken?

54
00:03:57,710 --> 00:04:04,010
‫Dus als ik een andere eigenschap zou hebben die is gemarkeerd als ergens toegevoegd, zodat ik deze in

55
00:04:04,580 --> 00:04:12,860
‫de inspecteur kan zien, typ ik float genaamd mijn x en zal dit standaard op nul zetten, zodat we kunnen zien dat we het veranderen.

56
00:04:13,730 --> 00:04:20,690
‫En wat ik wil doen is de x-waarde uit de my float halen in begin play en ik wil deze in

57
00:04:20,690 --> 00:04:22,130
‫de my x-variabele instellen.

58
00:04:22,610 --> 00:04:30,320
‫Dus laten we naar het C++-bestand gaan en beginnen met spelen na de regel die supergroot in het spel zegt, we gaan mijn

59
00:04:30,320 --> 00:04:37,970
‫X gelijk stellen aan wat we willen om iets van mijn vector te krijgen, maar we willen niet het geheel van mijn

60
00:04:37,970 --> 00:04:38,570
‫vector.

61
00:04:38,570 --> 00:04:39,800
‫Dat zou een fout zijn.

62
00:04:39,800 --> 00:04:44,570
‫We kunnen een vector niet in een float zetten, we willen alleen het x-gedeelte van die vector.

63
00:04:45,050 --> 00:04:48,620
‫Om dat te begrijpen, moeten we het concept van een operator begrijpen.

64
00:04:48,740 --> 00:04:53,030
‫Operators zijn symbolen in C++ die iets doen.

65
00:04:53,030 --> 00:04:54,410
‫We hebben er al een paar gezien.

66
00:04:54,650 --> 00:04:57,890
‫We hebben de plus-operator gezien, die twee dingen bij elkaar optelt.

67
00:04:57,890 --> 00:04:59,450
‫Er is ook een min-operator.

68
00:04:59,450 --> 00:05:03,770
‫Er is de gelijkheidsoperator, de equals-operator, die toewijst.

69
00:05:03,890 --> 00:05:04,270
‫Dingen.

70
00:05:04,270 --> 00:05:06,710
‫Dus we gebruiken dit hier op regel 19.

71
00:05:06,710 --> 00:05:11,750
‫Dat is een operator die de waarde van mijn vector toewijst aan mijn X.

72
00:05:12,350 --> 00:05:18,620
‫En dan hebben we nog een operator, die we moeten leren kennen en dat is de DOT-operator.

73
00:05:18,980 --> 00:05:23,300
‫Het is een operator die iets uit een struct of klasse haalt.

74
00:05:23,390 --> 00:05:27,200
‫Dus we willen de X uit mijn vector halen.

75
00:05:27,200 --> 00:05:33,860
‫Dus we gebruiken een puntoperator, we doen punt x nu gebruiken we hier geen spatie tussen de mijn vector en de x.

76
00:05:34,130 --> 00:05:40,400
‫We laten deze gewoon bij elkaar lopen, dus zo laten we dingen meestal achter, ook al is het niet per se een fout

77
00:05:40,400 --> 00:05:41,930
‫om spaties in te voeren.

78
00:05:42,350 --> 00:05:51,260
‫Dus we hebben mijn vectorpunt x zou de x-waarde van de vector moeten krijgen en deze in de my x float moeten plaatsen.

79
00:05:51,710 --> 00:05:57,470
‫Dus plaatsen we een puntkomma aan het einde van de regel daar en zoals gewoonlijk negeer ik de rode kronkels omdat het soms lang

80
00:05:57,470 --> 00:06:00,290
‫duurt om ze bij te werken en soms niet correct zijn.

81
00:06:00,770 --> 00:06:06,530
‫En dan gaan we in op live-codering en klikken op de knop die opnieuw compileert en gewoon controleren of

82
00:06:06,530 --> 00:06:08,300
‫we een succesvol resultaat krijgen.

83
00:06:08,750 --> 00:06:11,060
‫En nee, zie je, we hebben een bouwfout.

84
00:06:11,060 --> 00:06:16,760
‫En als je kijkt naar de fout die zegt dat mijn vector een niet-aangegeven identificatie is en dat is omdat ik een

85
00:06:16,760 --> 00:06:21,620
‫typfout heb gemaakt, ik heb de F-vector mijn float genoemd en je schreeuwt waarschijnlijk tegen je schermen.

86
00:06:21,620 --> 00:06:26,150
‫Maar het is goed om je te laten zien dat zelfs experts, programmeurs fouten maken.

87
00:06:26,150 --> 00:06:30,710
‫We wilden dat mijn vector noemen, dus ik ga terug naar het hoofdbestand

88
00:06:30,950 --> 00:06:35,540
‫en hernoem het naar mijn vector, wat het probleem in mijn hersenen zou moeten oplossen.

89
00:06:35,720 --> 00:06:38,660
‫Laten we doorgaan en nogmaals op de compileerknop klikken.

90
00:06:38,960 --> 00:06:44,130
‫En dat geeft je een voorproefje van hoe het is als je fouten maakt, je krijgt een compilatiefout.

91
00:06:44,130 --> 00:06:45,230
‫Het gebeurt de hele tijd.

92
00:06:45,230 --> 00:06:48,230
‫In feite is het zeer zeldzaam om geen fouten te maken.

93
00:06:48,230 --> 00:06:54,740
‫De eerste keer dat je iets doet, gaan we verder en klikken we op play en zullen we zien welke waarde we

94
00:06:54,770 --> 00:06:56,270
‫krijgen in het detailvenster.

95
00:06:56,270 --> 00:07:05,000
‫Je kunt nu zien dat mijn x is ingesteld op één, omdat dat de waarde was in de x-component van de vectorvariabele

96
00:07:05,000 --> 00:07:05,720
‫my.

97
00:07:06,170 --> 00:07:09,740
‫Dus ik zou je willen uitdagen om een vectorwaarde in te stellen.

98
00:07:09,740 --> 00:07:11,870
‫We hebben waarden van de vector gekregen.

99
00:07:11,870 --> 00:07:13,010
‫Laten we ze nu proberen in te stellen.

100
00:07:13,010 --> 00:07:17,000
‫Probeer in principe de puntoperator te gebruiken om een waarde in te stellen.

101
00:07:17,420 --> 00:07:25,760
‫Probeer de twee zijden van die gelijken om te draaien, zodat we in plaats daarvan de mijn X aan de rechterkant en de mijn vector aan

102
00:07:25,760 --> 00:07:26,840
‫de linkerkant hebben.

103
00:07:27,140 --> 00:07:30,260
‫En wat als u overstapt naar Y of z?

104
00:07:30,500 --> 00:07:33,260
‫Is er een verschil dat video trekt en het probeert?

105
00:07:36,740 --> 00:07:37,390
‫Oké.

106
00:07:37,400 --> 00:07:37,900
‫Welkom terug.

107
00:07:37,910 --> 00:07:40,580
‫Dus ik ga proberen deze twee om te draaien.

108
00:07:40,580 --> 00:07:44,930
‫Laten we naar C++ gaan en in plaats daarvan beginnen met spelen.

109
00:07:44,930 --> 00:07:52,730
‫Wat ik ga zeggen is dat mijn vectorpunt y gelijk is aan mijn x en plaats dan een puntkomma aan het einde van de regel.

110
00:07:52,970 --> 00:07:57,530
‫En zo kunnen we ook binnen een structuur waarden instellen.

111
00:07:57,920 --> 00:08:06,920
‫Dus laten we teruggaan naar Unreal en opnieuw compileren en dan kunnen we doorgaan en wat waarde instellen in mijn X.

112
00:08:06,920 --> 00:08:08,690
‫Ik ga hier de waarde van vijf invullen.

113
00:08:10,070 --> 00:08:15,410
‫Dan ga ik verder en speel ik en bekijk het detailvenster voor het bewegende platform.

114
00:08:15,740 --> 00:08:24,320
‫En ja hoor, de y-waarde van mijn vector is in het begin van het spel bijgewerkt met de waarde in mijn x.

115
00:08:24,860 --> 00:08:26,000
‫Gefeliciteerd dus.

116
00:08:26,000 --> 00:08:33,020
‫We hebben gezien hoe we meer gecompliceerde typen kunnen gebruiken, de samengestelde typen zoals structs in C++.

117
00:08:33,020 --> 00:08:34,640
‫Ik zie je in de volgende lezing.

