﻿1
00:00:04,370 --> 00:00:05,210
‫Hallo en welkom.

2
00:00:05,210 --> 00:00:10,250
‫In deze lezing gaan we het concept van lokale variabelen onderzoeken, variabelen die alleen binnen

3
00:00:10,250 --> 00:00:11,750
‫een bepaalde functie bestaan.

4
00:00:12,080 --> 00:00:19,970
‫En we gaan kijken hoe we dit kunnen gebruiken om onze locatie op een andere waarde in te stellen dan die is opgeslagen

5
00:00:19,970 --> 00:00:21,380
‫in de my-vector.

6
00:00:21,530 --> 00:00:22,190
‫Laten we erin duiken.

7
00:00:22,730 --> 00:00:28,340
‫Dus tot nu toe hebben we te maken gehad met variabelen die tot een klasse behoren.

8
00:00:28,580 --> 00:00:31,520
‫We hebben dit in Blueprint gedaan en nu in C++.

9
00:00:31,910 --> 00:00:37,130
‫En dit betekent dat de variabele zo lang leeft als de instantie van de klasse.

10
00:00:37,130 --> 00:00:43,190
‫Elke instantie krijgt zijn eigen kopie van een variabele, maar terwijl de klasse-instantie in leven is, is de variabele

11
00:00:43,190 --> 00:00:43,820
‫twee.

12
00:00:44,030 --> 00:00:47,660
‫Dit concept waar ik het net over had, heeft eigenlijk een naam.

13
00:00:47,660 --> 00:00:48,830
‫Het heet Scope.

14
00:00:49,430 --> 00:00:52,640
‫Wat het betekent, is hoe lang de variabele leeft?

15
00:00:52,640 --> 00:00:59,450
‫En ik heb zojuist een instantievariabele beschreven die een variabele is die net zo lang meegaat als een bepaalde instantie van

16
00:00:59,450 --> 00:01:00,470
‫een klasse.

17
00:01:00,950 --> 00:01:03,830
‫Nu zijn er ook andere soorten variabelen.

18
00:01:03,830 --> 00:01:07,430
‫Er zijn variabelen die zo lang leven als een functie.

19
00:01:07,430 --> 00:01:13,160
‫Kortom, wanneer u een bepaalde functie aanroept, wordt die functie uitgevoerd en zodra de functie is

20
00:01:13,160 --> 00:01:14,720
‫voltooid, sterft de variabele.

21
00:01:15,200 --> 00:01:23,660
‫Dus in C++ is een variabele in het algemeen geldig tussen de accolades in de syntaxis.

22
00:01:23,660 --> 00:01:25,470
‫Het is dus een goede vuistregel.

23
00:01:25,470 --> 00:01:31,460
‫Het is niet altijd precies correct, maar de tick-functie, bijvoorbeeld, we hebben hier

24
00:01:31,460 --> 00:01:39,710
‫enkele accolades en als we een variabele binnen deze tick-functie zouden declareren, dan zou deze maar een keer bestaan.

25
00:01:39,710 --> 00:01:43,820
‫De tick-functie wordt aangeroepen en de volgende keer zou deze opnieuw worden gemaakt.

26
00:01:44,480 --> 00:01:45,950
‫Het bewegende platform.

27
00:01:45,980 --> 00:01:52,130
‫Als we dat kunnen zien, als we kijken naar bewegend platformpunt h, kun je zien dat de

28
00:01:52,130 --> 00:01:59,540
‫my-vector wordt gedeclareerd binnen enkele accolades die behoren tot de definitie van de klasse, en daarom leven deze variabelen zo lang

29
00:01:59,540 --> 00:02:02,210
‫als een instantie van de klas doet.

30
00:02:02,420 --> 00:02:04,580
‫Dat wil ik je dus graag bewijzen.

31
00:02:04,580 --> 00:02:11,060
‫Dus laten we ingaan op het bewegende platform punt CP en laten we hierin een lokale variabele maken.

32
00:02:11,240 --> 00:02:14,870
‫Dus ik ga het op precies dezelfde manier maken als wij hebben gedaan.

33
00:02:15,110 --> 00:02:20,840
‫Als we een fout declareren in de kop van het bestand, hebben we een F-vector, dan de naam van de

34
00:02:20,840 --> 00:02:22,850
‫vector, ik noem het lokale vector.

35
00:02:23,810 --> 00:02:27,920
‫En dan kunnen we dit een waarde instellen wanneer we het maken.

36
00:02:28,190 --> 00:02:32,810
‫We kunnen dat doen met behulp van de constructor voor F-vector, of we kunnen het doen vanuit een andere variabele,

37
00:02:32,930 --> 00:02:35,510
‫net zoals we een variabele kunnen doorgeven aan een functie.

38
00:02:35,510 --> 00:02:38,810
‫We kunnen dus allereerst alleen de constructormethode gebruiken.

39
00:02:38,810 --> 00:02:45,410
‫Dus we krijgen de F-vector en ik geef het een 1 tot 3 en dan een puntkomma, het einde van de

40
00:02:45,410 --> 00:02:46,010
‫regel.

41
00:02:46,010 --> 00:02:48,160
‫Dus dat is nu een lokale variabele.

42
00:02:48,170 --> 00:02:54,830
‫Het bestaat alleen binnen deze functie en wordt elke keer dat de functie wordt aangeroepen opnieuw ingesteld.

43
00:02:55,190 --> 00:03:01,190
‫Dus als ik zoiets zou doen, als ik iets zou doen zoals we hebben op regel

44
00:03:01,190 --> 00:03:09,350
‫29 met de my-vector die wordt bijgewerkt, kunnen we een lokale vector hebben, we kunnen de lokale vector dot z gelijk hebben

45
00:03:09,350 --> 00:03:12,470
‫aan de lokale vector dot z plus een.

46
00:03:13,040 --> 00:03:22,010
‫En als ik mijn locatie op die lokale vector zou instellen, zal het elk frame hetzelfde zijn omdat

47
00:03:22,010 --> 00:03:26,180
‫we resetten en vanaf dezelfde locatie beginnen.

48
00:03:26,180 --> 00:03:28,880
‫Een, twee, drie, elke tikfunctie.

49
00:03:28,880 --> 00:03:31,520
‫Deze functie bestaat dus eigenlijk alleen lokaal.

50
00:03:31,670 --> 00:03:38,810
‫Dus ik zou graag willen dat je een klein experiment uitprobeert als uitdaging om de lokale vector van de mijn vector in te stellen.

51
00:03:38,810 --> 00:03:43,550
‫Dus je gaat het in principe doen in plaats van het vanuit de constructor in te stellen, je gaat

52
00:03:43,550 --> 00:03:49,460
‫het instellen op basis van de waarde die momenteel in mijn vector staat, die een kopie van die vector naar je lokale vector gaat

53
00:03:49,460 --> 00:03:49,940
‫nemen.

54
00:03:50,570 --> 00:03:54,320
‫Dan wil ik dat je op een locatie instelt met behulp van de lokale vector.

55
00:03:54,650 --> 00:04:00,350
‫En omdat we die lokale vector elk frame proberen bij te werken, laten we eens kijken wat het effect is.

56
00:04:00,350 --> 00:04:01,580
‫Beweegt het platform?

57
00:04:01,580 --> 00:04:07,850
‫Zou je het verwachten en het gaan uitproberen, code afspelen compileren en kijken of het daadwerkelijk video plaatst en

58
00:04:07,850 --> 00:04:08,870
‫probeer het.

59
00:04:11,950 --> 00:04:12,580
‫Oké.

60
00:04:12,580 --> 00:04:13,570
‫Welkom terug.

61
00:04:13,600 --> 00:04:19,480
‫Dus ik ga in plaats van de constructor hier te gebruiken om de lokale vector in te stellen, in plaats

62
00:04:19,510 --> 00:04:20,920
‫daarvan mijn vector instellen.

63
00:04:21,220 --> 00:04:28,330
‫Dus we nemen de waarde die momenteel in mijn vector is opgeslagen en we zetten het in de lokale

64
00:04:28,900 --> 00:04:32,800
‫vector en dan werken we de lokale vector bij.

65
00:04:32,800 --> 00:04:36,520
‫We verhogen, dat gezegd hebbende, met één per frame.

66
00:04:36,850 --> 00:04:40,930
‫En dan zou ik de actieve locatie willen instellen in plaats van vanuit mijn vector.

67
00:04:40,930 --> 00:04:44,770
‫We gaan het in plaats daarvan instellen vanuit de lokale vector.

68
00:04:45,580 --> 00:04:48,880
‫Wat gaat er in dit geval gebeuren, denk je?

69
00:04:48,910 --> 00:04:50,980
‫Laten we doorgaan en het uitzoeken.

70
00:04:50,980 --> 00:04:56,590
‫Ik ga op de compileerknop drukken en ga door en druk op play

71
00:04:56,590 --> 00:05:03,100
‫en zal zien dat het platform nog steeds naar rechts beweegt, maar niet omhoog in de Z-richting.

72
00:05:03,100 --> 00:05:09,460
‫Dus je kunt zien dat dit niet echt een impact heeft, het verhogen van de lokale vector omdat

73
00:05:09,760 --> 00:05:14,380
‫het wordt gereset van de huidige waarde in mijn vector, elk frame.

74
00:05:14,830 --> 00:05:17,320
‫Mijn vector wordt echter nog steeds bijgewerkt.

75
00:05:17,320 --> 00:05:19,780
‫Elk frame wordt de y-waarde verhoogd, elk frame.

76
00:05:19,780 --> 00:05:22,630
‫En daarom zien we de beweging naar rechts.

77
00:05:22,900 --> 00:05:31,540
‫Dus een manier waarop we kunnen zien dat deze verandering naar lokale vector gewoon lokaal is, is door deze waarde te verhogen

78
00:05:31,540 --> 00:05:33,610
‫van één naar misschien 100.

79
00:05:33,820 --> 00:05:38,350
‫Dus we voegen 100 toe aan de lokale vectorwaarde.

80
00:05:38,800 --> 00:05:42,280
‫We kunnen overgaan en compileren en dan op play drukken.

81
00:05:42,850 --> 00:05:47,680
‫En wat je gaat zien is dat het platform eigenlijk 100 eenheden hoger in de lucht is.

82
00:05:47,680 --> 00:05:55,600
‫Laten we hier even de tijd nemen en uitwerpen met F8 en het spel pauzeren met de pauzeknop in de

83
00:05:55,600 --> 00:06:01,750
‫hoofdwerkbalk en vervolgens een bewegend platform selecteren om het te bekijken in het detailvenster.

84
00:06:01,750 --> 00:06:06,340
‫Om dat te doen, moet ik er echt op klikken in de viewport, om de een of andere reden werkt het soms niet om er gewoon

85
00:06:06,340 --> 00:06:07,510
‫op te klikken in de omtrek.

86
00:06:07,510 --> 00:06:17,380
‫M Ik wil je erop wijzen dat de waarde in mijn vector, de Z-waarde in mijn vector 100 eenheden

87
00:06:17,380 --> 00:06:21,790
‫kleiner is dan de Z-locatie van de transformatie.

88
00:06:22,090 --> 00:06:26,970
‫Je kunt dus zien dat het toevoegen aan die lokale vector een impact heeft gehad.

89
00:06:26,980 --> 00:06:34,120
‫We hebben onze locatie 100 eenheden hoger dan de locatie in de mijn vector.

90
00:06:34,150 --> 00:06:39,280
‫En wat echt geweldig is aan lokale variabelen, is dat wanneer de functie zijn specifieke uitvoering heeft voltooid,

91
00:06:39,280 --> 00:06:41,440
‫ze worden gewist en opnieuw worden ingesteld.

92
00:06:41,440 --> 00:06:44,230
‫U weet dus altijd wat u kunt verwachten met de lokale variabele.

93
00:06:44,500 --> 00:06:50,650
‫U weet altijd welke waarde erin zal staan, in tegenstelling tot een klassevariabele die op elk moment kan worden

94
00:06:50,710 --> 00:06:52,660
‫bijgewerkt vanuit een andere functie.

95
00:06:52,720 --> 00:06:57,160
‫Dus we gaan deze lokale variabelen in een paar colleges aan de tand voelen.

96
00:06:57,160 --> 00:06:58,360
‫Laten we verder duiken.

