﻿1
00:00:04,370 --> 00:00:05,390
‫Hallo en welkom.

2
00:00:05,390 --> 00:00:12,170
‫In deze lezing gaan we de link tussen de verhuizer en de trigger opzetten met behulp van een techniek die afhankelijkheidsinjectie

3
00:00:12,170 --> 00:00:18,230
‫wordt genoemd, zodat tegen het einde van de lezing, als we de waterspuwer erin steken, de deur naar beneden

4
00:00:18,230 --> 00:00:20,810
‫gaat, of op zijn minst gedeeltelijk doet.

5
00:00:20,810 --> 00:00:24,260
‫Laten we erin duiken en kijken hoe dit werkt.

6
00:00:25,080 --> 00:00:26,460
‫En ik pak een kopje.

7
00:00:26,490 --> 00:00:33,030
‫We hebben gezien dat er een afhankelijkheid is, wat we een afhankelijkheid voor de fysica noemen.

8
00:00:33,030 --> 00:00:40,350
‫Deze grijper kan zijn werk niet doen tenzij je ergens een physics-handvat-component hebt, nu is het zo

9
00:00:40,350 --> 00:00:42,960
‫dat de trigger-component hetzelfde is.

10
00:00:42,960 --> 00:00:50,100
‫De triggercomponent moet, om zijn werk goed te kunnen doen, toegang hebben tot een movercomponent.

11
00:00:50,460 --> 00:00:57,360
‫In dit geval is het echter een beetje lastiger omdat in het geval van onze geheime deur

12
00:00:57,360 --> 00:01:02,400
‫de trekker en het bewegende object zich binnen dezelfde actor bevinden.

13
00:01:02,730 --> 00:01:08,220
‫U kunt dus een object krijgen door de a-component van het type op de actor te vinden.

14
00:01:08,220 --> 00:01:14,490
‫Maar wat als en we zullen deze situatie in mijn script hebben, waarbij ik wil dat mijn trigger zich in

15
00:01:14,490 --> 00:01:20,760
‫een ander deel van de kamer bevindt dan de acteur die goed beweegt om dat soort flexibiliteit mogelijk te maken.

16
00:01:20,760 --> 00:01:26,940
‫We willen het zo dat de trigger niet zijn eigen afhankelijkheden hoeft te zoeken.

17
00:01:26,940 --> 00:01:30,330
‫En er is eigenlijk een naam voor dit soort programmaconcept.

18
00:01:30,330 --> 00:01:32,640
‫Het wordt afhankelijkheidsinjectie genoemd.

19
00:01:32,640 --> 00:01:37,680
‫Kortom, het is in het geval dat we iets hebben dat zegt: ik heb een ander object nodig, maar ik kan het

20
00:01:37,680 --> 00:01:40,230
‫zelf niet vinden of ik wil het zelf niet vinden.

21
00:01:40,290 --> 00:01:47,940
‫En het is vaak verstandig om het niet aan het object over te laten dat zijn eigen werk doet, waardoor het een andere taak krijgt

22
00:01:47,940 --> 00:01:50,850
‫om te proberen een object te pakken te krijgen.

23
00:01:51,300 --> 00:02:00,810
‫Dus de manier waarop we dit kunnen doen, is door een mechanisme te creëren voor blauwdrukken om de triggercomponent te vertellen waar een

24
00:02:00,810 --> 00:02:02,730
‫verhuizer te vinden is.

25
00:02:02,910 --> 00:02:09,330
‫En de manier waarop we dit gaan doen, is door een blauwdruk aanroepbare functie te maken op onze triggercomponent.

26
00:02:09,810 --> 00:02:11,220
‫Dus het wordt openbaar.

27
00:02:11,220 --> 00:02:16,980
‫We gaan het in de openbare sectie onder de tick-component plaatsen, en het

28
00:02:16,980 --> 00:02:22,710
‫wordt een U-functie, zodat het dan tussen haakjes kan staan, blauwdruk oproepbaar.

29
00:02:23,280 --> 00:02:26,130
‫En er hoeft niet veel aan deze functie te zijn.

30
00:02:26,130 --> 00:02:33,330
‫Het zal nietig zijn omdat het het niet nodig heeft om iets terug te geven, maar het zal set mover

31
00:02:33,330 --> 00:02:40,860
‫worden, dus het zal een link naar de mover instellen en om een link naar de mover in te stellen, moet

32
00:02:40,860 --> 00:02:43,620
‫het een aanwijzer naar een verhuizerscomponent opnemen.

33
00:02:43,620 --> 00:02:51,540
‫Dus dat wordt je verhuizerster en we kunnen dit gewoon de verhuizer noemen en een puntkomma aan het einde van die

34
00:02:51,540 --> 00:02:52,440
‫regel zetten.

35
00:02:52,830 --> 00:02:55,350
‫En we moeten dit ergens opslaan.

36
00:02:55,350 --> 00:02:57,300
‫We gaan dus een nieuwe privévariabele maken.

37
00:02:57,300 --> 00:03:02,280
‫Het wordt geen nieuw pand en het wordt gewoon een U-verhuisaanwijzer, die we

38
00:03:02,280 --> 00:03:04,530
‫ook een verhuizer gaan noemen.

39
00:03:04,560 --> 00:03:12,900
‫Zoals zo, en wat we gaan doen, is deze set mover in de CPP implementeren, zodat deze move een

40
00:03:12,900 --> 00:03:15,660
‫pointer wordt, die standaard null is.

41
00:03:16,050 --> 00:03:17,790
‫En we moeten nog één ding doen.

42
00:03:17,790 --> 00:03:20,640
‫We moeten het headerbestand voor onze verhuizer opnemen.

43
00:03:21,150 --> 00:03:26,370
‫In dit geval, omdat het header-bestand zich in dezelfde map bevindt als

44
00:03:26,370 --> 00:03:36,870
‫de triggercomponent, hoeven we alleen maar quote mover H op te nemen en dat zal ervoor zorgen dat de triggercomponent op de hoogte is van

45
00:03:36,870 --> 00:03:38,100
‫het mover-type.

46
00:03:38,280 --> 00:03:40,230
‫Laten we dus naar onze triggercomponent gaan.

47
00:03:40,230 --> 00:03:46,530
‫CP En ik ga dit onder ons vinkje plaatsen dat we set mover gaan implementeren.

48
00:03:46,530 --> 00:03:52,500
‫We gaan de klasse die u activeert ervoor plaatsen en deze laten inspringen.

49
00:03:53,400 --> 00:03:55,590
‫Verwijder de puntkomma en voeg accolades toe.

50
00:03:55,590 --> 00:04:00,150
‫En eigenlijk alles wat we hier hoeven te doen, laten we de naam alleen in het C++-bestand wijzigen.

51
00:04:00,150 --> 00:04:06,060
‫Het maakt eigenlijk niet uit of de naam van de parameters overeenkomt tussen header en C++.

52
00:04:06,060 --> 00:04:12,540
‫Dus we kunnen het hier veranderen en zeggen dat de nieuwe verhuizer de verhuizer is.

53
00:04:12,630 --> 00:04:20,010
‫En dus kunnen we onze lokale variabele, onze klassevariabele verhuizer gelijk stellen aan de nieuwe verhuizer zoals.

54
00:04:20,010 --> 00:04:27,030
‫Dus nu is het eigenlijk best belangrijk dat je deze hernoemingsstap niet overslaat, want als de invoerparameter dezelfde

55
00:04:27,030 --> 00:04:34,170
‫naam heeft als een van de variabelen in de klasse, dan zal onwerkelijk standaard dat als een fout instellen.

56
00:04:34,170 --> 00:04:39,720
‫Het heet schaduwen en Unreal wil niet dat je het doet, dus je moet er wel voor

57
00:04:39,720 --> 00:04:44,970
‫zorgen dat je parameternaam nu anders is dan de variabele, omdat deze nieuwe functies niet altijd verschijnen

58
00:04:44,970 --> 00:04:46,260
‫met live coderingswijzigingen.

59
00:04:46,260 --> 00:04:52,290
‫Ik ga de editor sluiten die opnieuw wordt gecompileerd vanuit Visual Studio-code en vervolgens opnieuw starten vanuit het nieuwe

60
00:04:52,290 --> 00:04:52,920
‫project.

61
00:04:52,950 --> 00:04:58,950
‫Laten we nu naar de inhoudslade gaan, onze geheime muurblauwdruk openen en dan

62
00:04:58,950 --> 00:05:06,080
‫vanaf ons Begin Play-knooppunt in de gebeurtenisgrafiek, laten we hier beginnen en naar set mover zoeken.

63
00:05:06,090 --> 00:05:08,190
‫Merk nu op dat er hier twee opties zijn.

64
00:05:08,190 --> 00:05:15,210
‫Ten eerste zou het zijn om de component in te stellen die ook verhuizer wordt genoemd, en één is een functie op de

65
00:05:15,210 --> 00:05:15,750
‫triggercomponent.

66
00:05:15,750 --> 00:05:18,840
‫Dus we willen degene selecteren die een functie is op de triggercomponent.

67
00:05:19,050 --> 00:05:27,120
‫En wat we dan willen doen, is onze verhuizer-component als de andere argumenten naar deze functie slepen en dat zou de slag

68
00:05:27,120 --> 00:05:28,110
‫moeten slaan.

69
00:05:28,110 --> 00:05:31,350
‫Het zet de verhuizer op het begin van het spel.

70
00:05:31,350 --> 00:05:37,800
‫Dus wat we nu in wezen willen, is dat onze triggercomponent

71
00:05:37,800 --> 00:05:41,400
‫de boolean moet instellen en instellen.

72
00:05:41,400 --> 00:05:46,110
‫Dus dat wordt mijn uitdaging aan jou om een aantal publieke functies te creëren in mover en mover.

73
00:05:46,110 --> 00:05:51,780
‫CP Het moet worden ingesteld, moet worden verplaatst en het moet uw eigenschapsvariabele bijwerken.

74
00:05:51,780 --> 00:05:56,970
‫Je kunt er zelfs voor zorgen dat het geen nieuwe eigenschap meer is, omdat we het af en toe via code

75
00:05:56,970 --> 00:05:59,760
‫gaan instellen en je het in het openbare gedeelte kunt plaatsen.

76
00:05:59,760 --> 00:06:04,740
‫Het moet openbaar zijn omdat we het gaan proberen vanuit onze triggercomponent.

77
00:06:04,740 --> 00:06:11,850
‫En je kunt het noemen op de mover-aanwijzer die we in de trigger-component hebben van de instelling van de tick-component,

78
00:06:11,850 --> 00:06:17,970
‫de juiste boolean, of we willen dat deze wordt ontgrendeld of opnieuw vergrendeld, pauzeer de video en

79
00:06:17,970 --> 00:06:18,960
‫probeer het.

80
00:06:22,250 --> 00:06:23,690
‫Oke welkom terug.

81
00:06:23,690 --> 00:06:29,410
‫Dus ik ga de eigenschap verwijderen van moet verhuizen. Ik ga naar

82
00:06:29,420 --> 00:06:39,800
‫het openbare gedeelte net onder de TTIC-component en ik ga een void-set maken als het moet verhuizen met een boolean die

83
00:06:39,800 --> 00:06:43,010
‫we gaan noemen moet zo bewegen.

84
00:06:43,280 --> 00:06:51,560
‫En dan gaan we dit nemen en gaan naar de verplaatsing CP en implementeren het, vervangen de puntkomma,

85
00:06:51,560 --> 00:07:00,920
‫voegen de je verplaatst dubbele punt, dubbele punt klasse toe en dan kunnen we dit in feite weer de nieuwe beweging

86
00:07:00,920 --> 00:07:08,030
‫noemen en we kunnen zeggen dat moet verhuizen is gelijk aan nieuw moet verhuizen.

87
00:07:08,030 --> 00:07:12,860
‫Nu vraag je je misschien af, waarom maken we de variabelen zelf niet gewoon openbaar toegankelijk, zodat

88
00:07:12,860 --> 00:07:14,660
‫we ze direct kunnen instellen?

89
00:07:14,780 --> 00:07:22,520
‫Dat is over het algemeen geen goede gewoonte in C++, want als je iemand je variabelen laat wijzigen, weet je nooit wat

90
00:07:22,520 --> 00:07:24,620
‫er met hen kan gebeuren.

91
00:07:24,620 --> 00:07:32,090
‫Terwijl als je daar een methode hebt om het voor je te doen, je later de manier kunt wijzigen waarop je interne variabelen

92
00:07:32,090 --> 00:07:38,240
‫structureert zonder je openbare functies te hoeven veranderen, wat betekent dat er minder updates zijn voor verschillende klassen die

93
00:07:38,240 --> 00:07:39,920
‫je hoeft te doen.

94
00:07:39,920 --> 00:07:46,070
‫Dus over het algemeen gebruiken we in de regel altijd setters en getters als we toegang moeten hebben tot variabelen in

95
00:07:46,070 --> 00:07:46,850
‫andere klassen.

96
00:07:46,850 --> 00:07:52,100
‫Dus nu we die nieuwe functie hebben gemaakt, gaan we naar trig-component CP waar we

97
00:07:52,100 --> 00:07:53,570
‫momenteel onze logberichten hebben.

98
00:07:53,570 --> 00:08:01,670
‫Wat we willen doen is toegang krijgen tot onze mover-aanwijzer, dus we gaan de mover-pijlenset moeten verplaatsen.

99
00:08:01,670 --> 00:08:06,140
‫En in het geval dat we een acceptabele acteur hebben, zou dat waar moeten zijn.

100
00:08:06,140 --> 00:08:08,600
‫We moeten een puntkomma aan het einde van de regel verplaatsen.

101
00:08:08,690 --> 00:08:12,200
‫En in het andere geval, nou dan zouden we dat waarschijnlijk niet moeten doen.

102
00:08:12,200 --> 00:08:20,510
‫Dus we gaan doen, de pijlset moet bewegen en plaats tussen haakjes false verwijder die extra R die ik aan het einde van mijn methode

103
00:08:20,510 --> 00:08:26,780
‫had en laten we nu opnieuw compileren in dit geval omdat ik deze functie alleen in C ++ land

104
00:08:26,780 --> 00:08:30,020
‫heb toegevoegd en het is niet opvraagbaar in blauwdruk.

105
00:08:30,020 --> 00:08:34,940
‫Ik denk niet dat ik de editor opnieuw hoef te starten om deze functionaliteit te laten werken, ons uitvoerlogboek

106
00:08:34,940 --> 00:08:39,530
‫te sluiten, naar onze waterspuwer te gaan en te beginnen met spelen en hem op te rapen.

107
00:08:39,770 --> 00:08:49,400
‫Laten we uit deze kooi gaan en hem in de alkoof steken en ze gaan, Hij beweegt naar beneden, maar stopt zodra de waterspuwer

108
00:08:49,400 --> 00:08:56,600
‫eruit valt, wat niet ideaal is omdat de waterspuwer niet echt op zijn plaats wordt gehouden en de

109
00:08:56,600 --> 00:08:59,060
‫muur niet volledig naar beneden.

110
00:08:59,150 --> 00:09:03,020
‫En omdat het natuurkunde simuleert, zal het uit die nis worden geplukt, nietwaar?

111
00:09:03,020 --> 00:09:10,580
‫Dus wat we moeten doen, is ervoor zorgen dat als we het eenmaal in ons triggergebied laten vallen, het daar wordt gerepareerd

112
00:09:10,580 --> 00:09:11,780
‫en gewoon blijft.

113
00:09:11,780 --> 00:09:14,210
‫Dat wordt dus het onderwerp van de volgende lezing.

114
00:09:14,210 --> 00:09:15,200
‫Ik zie je daar.

