‫Hallo en welkom.
‫In deze lezing gaan we de link tussen de verhuizer en de trigger opzetten met behulp van een techniek die afhankelijkheidsinjectie
‫wordt genoemd, zodat tegen het einde van de lezing, als we de waterspuwer erin steken, de deur naar beneden
‫gaat, of op zijn minst gedeeltelijk doet.
‫Laten we erin duiken en kijken hoe dit werkt.
‫En ik pak een kopje.
‫We hebben gezien dat er een afhankelijkheid is, wat we een afhankelijkheid voor de fysica noemen.
‫Deze grijper kan zijn werk niet doen tenzij je ergens een physics-handvat-component hebt, nu is het zo
‫dat de trigger-component hetzelfde is.
‫De triggercomponent moet, om zijn werk goed te kunnen doen, toegang hebben tot een movercomponent.
‫In dit geval is het echter een beetje lastiger omdat in het geval van onze geheime deur
‫de trekker en het bewegende object zich binnen dezelfde actor bevinden.
‫U kunt dus een object krijgen door de a-component van het type op de actor te vinden.
‫Maar wat als en we zullen deze situatie in mijn script hebben, waarbij ik wil dat mijn trigger zich in
‫een ander deel van de kamer bevindt dan de acteur die goed beweegt om dat soort flexibiliteit mogelijk te maken.
‫We willen het zo dat de trigger niet zijn eigen afhankelijkheden hoeft te zoeken.
‫En er is eigenlijk een naam voor dit soort programmaconcept.
‫Het wordt afhankelijkheidsinjectie genoemd.
‫Kortom, het is in het geval dat we iets hebben dat zegt: ik heb een ander object nodig, maar ik kan het
‫zelf niet vinden of ik wil het zelf niet vinden.
‫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
‫om te proberen een object te pakken te krijgen.
‫Dus de manier waarop we dit kunnen doen, is door een mechanisme te creëren voor blauwdrukken om de triggercomponent te vertellen waar een
‫verhuizer te vinden is.
‫En de manier waarop we dit gaan doen, is door een blauwdruk aanroepbare functie te maken op onze triggercomponent.
‫Dus het wordt openbaar.
‫We gaan het in de openbare sectie onder de tick-component plaatsen, en het
‫wordt een U-functie, zodat het dan tussen haakjes kan staan, blauwdruk oproepbaar.
‫En er hoeft niet veel aan deze functie te zijn.
‫Het zal nietig zijn omdat het het niet nodig heeft om iets terug te geven, maar het zal set mover
‫worden, dus het zal een link naar de mover instellen en om een link naar de mover in te stellen, moet
‫het een aanwijzer naar een verhuizerscomponent opnemen.
‫Dus dat wordt je verhuizerster en we kunnen dit gewoon de verhuizer noemen en een puntkomma aan het einde van die
‫regel zetten.
‫En we moeten dit ergens opslaan.
‫We gaan dus een nieuwe privévariabele maken.
‫Het wordt geen nieuw pand en het wordt gewoon een U-verhuisaanwijzer, die we
‫ook een verhuizer gaan noemen.
‫Zoals zo, en wat we gaan doen, is deze set mover in de CPP implementeren, zodat deze move een
‫pointer wordt, die standaard null is.
‫En we moeten nog één ding doen.
‫We moeten het headerbestand voor onze verhuizer opnemen.
‫In dit geval, omdat het header-bestand zich in dezelfde map bevindt als
‫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
‫het mover-type.
‫Laten we dus naar onze triggercomponent gaan.
‫CP En ik ga dit onder ons vinkje plaatsen dat we set mover gaan implementeren.
‫We gaan de klasse die u activeert ervoor plaatsen en deze laten inspringen.
‫Verwijder de puntkomma en voeg accolades toe.
‫En eigenlijk alles wat we hier hoeven te doen, laten we de naam alleen in het C++-bestand wijzigen.
‫Het maakt eigenlijk niet uit of de naam van de parameters overeenkomt tussen header en C++.
‫Dus we kunnen het hier veranderen en zeggen dat de nieuwe verhuizer de verhuizer is.
‫En dus kunnen we onze lokale variabele, onze klassevariabele verhuizer gelijk stellen aan de nieuwe verhuizer zoals.
‫Dus nu is het eigenlijk best belangrijk dat je deze hernoemingsstap niet overslaat, want als de invoerparameter dezelfde
‫naam heeft als een van de variabelen in de klasse, dan zal onwerkelijk standaard dat als een fout instellen.
‫Het heet schaduwen en Unreal wil niet dat je het doet, dus je moet er wel voor
‫zorgen dat je parameternaam nu anders is dan de variabele, omdat deze nieuwe functies niet altijd verschijnen
‫met live coderingswijzigingen.
‫Ik ga de editor sluiten die opnieuw wordt gecompileerd vanuit Visual Studio-code en vervolgens opnieuw starten vanuit het nieuwe
‫project.
‫Laten we nu naar de inhoudslade gaan, onze geheime muurblauwdruk openen en dan
‫vanaf ons Begin Play-knooppunt in de gebeurtenisgrafiek, laten we hier beginnen en naar set mover zoeken.
‫Merk nu op dat er hier twee opties zijn.
‫Ten eerste zou het zijn om de component in te stellen die ook verhuizer wordt genoemd, en één is een functie op de
‫triggercomponent.
‫Dus we willen degene selecteren die een functie is op de triggercomponent.
‫En wat we dan willen doen, is onze verhuizer-component als de andere argumenten naar deze functie slepen en dat zou de slag
‫moeten slaan.
‫Het zet de verhuizer op het begin van het spel.
‫Dus wat we nu in wezen willen, is dat onze triggercomponent
‫de boolean moet instellen en instellen.
‫Dus dat wordt mijn uitdaging aan jou om een aantal publieke functies te creëren in mover en mover.
‫CP Het moet worden ingesteld, moet worden verplaatst en het moet uw eigenschapsvariabele bijwerken.
‫Je kunt er zelfs voor zorgen dat het geen nieuwe eigenschap meer is, omdat we het af en toe via code
‫gaan instellen en je het in het openbare gedeelte kunt plaatsen.
‫Het moet openbaar zijn omdat we het gaan proberen vanuit onze triggercomponent.
‫En je kunt het noemen op de mover-aanwijzer die we in de trigger-component hebben van de instelling van de tick-component,
‫de juiste boolean, of we willen dat deze wordt ontgrendeld of opnieuw vergrendeld, pauzeer de video en
‫probeer het.
‫Oke welkom terug.
‫Dus ik ga de eigenschap verwijderen van moet verhuizen. Ik ga naar
‫het openbare gedeelte net onder de TTIC-component en ik ga een void-set maken als het moet verhuizen met een boolean die
‫we gaan noemen moet zo bewegen.
‫En dan gaan we dit nemen en gaan naar de verplaatsing CP en implementeren het, vervangen de puntkomma,
‫voegen de je verplaatst dubbele punt, dubbele punt klasse toe en dan kunnen we dit in feite weer de nieuwe beweging
‫noemen en we kunnen zeggen dat moet verhuizen is gelijk aan nieuw moet verhuizen.
‫Nu vraag je je misschien af, waarom maken we de variabelen zelf niet gewoon openbaar toegankelijk, zodat
‫we ze direct kunnen instellen?
‫Dat is over het algemeen geen goede gewoonte in C++, want als je iemand je variabelen laat wijzigen, weet je nooit wat
‫er met hen kan gebeuren.
‫Terwijl als je daar een methode hebt om het voor je te doen, je later de manier kunt wijzigen waarop je interne variabelen
‫structureert zonder je openbare functies te hoeven veranderen, wat betekent dat er minder updates zijn voor verschillende klassen die
‫je hoeft te doen.
‫Dus over het algemeen gebruiken we in de regel altijd setters en getters als we toegang moeten hebben tot variabelen in
‫andere klassen.
‫Dus nu we die nieuwe functie hebben gemaakt, gaan we naar trig-component CP waar we
‫momenteel onze logberichten hebben.
‫Wat we willen doen is toegang krijgen tot onze mover-aanwijzer, dus we gaan de mover-pijlenset moeten verplaatsen.
‫En in het geval dat we een acceptabele acteur hebben, zou dat waar moeten zijn.
‫We moeten een puntkomma aan het einde van de regel verplaatsen.
‫En in het andere geval, nou dan zouden we dat waarschijnlijk niet moeten doen.
‫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
‫had en laten we nu opnieuw compileren in dit geval omdat ik deze functie alleen in C ++ land
‫heb toegevoegd en het is niet opvraagbaar in blauwdruk.
‫Ik denk niet dat ik de editor opnieuw hoef te starten om deze functionaliteit te laten werken, ons uitvoerlogboek
‫te sluiten, naar onze waterspuwer te gaan en te beginnen met spelen en hem op te rapen.
‫Laten we uit deze kooi gaan en hem in de alkoof steken en ze gaan, Hij beweegt naar beneden, maar stopt zodra de waterspuwer
‫eruit valt, wat niet ideaal is omdat de waterspuwer niet echt op zijn plaats wordt gehouden en de
‫muur niet volledig naar beneden.
‫En omdat het natuurkunde simuleert, zal het uit die nis worden geplukt, nietwaar?
‫Dus wat we moeten doen, is ervoor zorgen dat als we het eenmaal in ons triggergebied laten vallen, het daar wordt gerepareerd
‫en gewoon blijft.
‫Dat wordt dus het onderwerp van de volgende lezing.
‫Ik zie je daar.