‫Hallo en welkom.
‫In deze lezing gaan we leren hoe we outputs uit functies in C++ kunnen halen.
‫En we gaan dit gebruiken om onze code enorm te vereenvoudigen en om een deel van die pseudocode die we hebben geschreven
‫te implementeren.
‫Laten we erin duiken.
‫Dus voordat we de geretourneerde waarden van functies proberen te begrijpen, laten we een korte omweg maken en het begrijpen.
‫Twee concepten voegen nog twee concepten toe aan onze kolossale.
‫Dus de eerste is de uitdrukking.
‫Een expressie is een codefragment dat een waarde produceert.
‫En er is de verklaring die een codefragment is dat een actie is die moet worden uitgevoerd.
‫Nu hebben deze twee eigenlijk een relatie in die zin dat een expressie bijna altijd een statement is, in die zin dat
‫om de waarde van een codefragment te berekenen, het een actie moet zijn die moet worden uitgevoerd.
‫Maar andersom hoeft dat niet per se ook zo te zijn.
‫Een verklaring geeft je niet altijd een waarde.
‫Laten we dus eens kijken naar enkele voorbeelden van uitdrukkingen en enkele dingen die niet uit de code komen die we
‫al hebben geschreven.
‫Dus als we mijn vector in C++ typen, is dit een uitdrukking omdat deze de waarde heeft van wat er ook is opgeslagen
‫in de mijn vectorvariabele.
‫Hetzelfde geldt voor de lokale vector.
‫Als je een lokale vector plus punt z hebt, is dat zelf een uitdrukking en een lokale vector punt z
‫plus 100.
‫Dat is zelf ook een uitdrukking, omdat de lokale vectorpunt z je de waarde binnen het Z-lid
‫gaf.
‫En als je 100 optelt, krijg je een nieuwe waarde die de toevoeging van 100 heeft.
‫Dit zijn dus allemaal uitdrukkingen.
‫Iets dat echter geen uitdrukking is, is wanneer we onze lokale vector verklaarden, toen we vector zeiden, lokale vector gelijk is aan
‫mijn vector en een puntkomma aan het einde van de regel zetten.
‫We kunnen dat niet gebruiken om een waarde te krijgen.
‫Er is geen waarde daar.
‫Het vertelt C++ gewoon dat hier een actie is die u moet uitvoeren.
‫Ik wil dat je een nieuwe lokale vector maakt.
‫Dat is dus geen uitdrukking.
‫Iets dat echter een uitdrukking is, is de locatie van de acteur.
‫Het is een functie die we aanroepen omdat er haakjes aan het einde staan.
‫We hebben hier eigenlijk geen argumenten.
‫Dit is een lege lijst met argumenten, maar het roept iets op.
‫En omdat deze functie een geretourneerde waarde heeft, is het eigenlijke stuk code hier een uitdrukking die de waarde aanneemt van wat
‫er ook uit de functie wordt geretourneerd.
‫En dit is in wezen hetzelfde als de uitvoerpennen die we eerder in een blauwdruk hebben gezien.
‫Behalve in tegenstelling tot blauwdrukken, kunt u slechts één uitvoerwaarde van een functie hebben.
‫Er is slechts één retourwaarde.
‫Dus dat is wat we hier kunnen gebruiken, waar we onze pseudocode hebben geschreven die zegt dat we de huidige locatie moeten krijgen.
‫Daar gaan we dat doen.
‫We gaan de locatie ophalen met behulp van onze toegangslocatie.
‫Laten we hier dus een nieuwe lokale variabele maken.
‫We krijgen een nieuwe lokale variabele genaamd F van het type effect.
‫Het moet een vector van het type S zijn, want dat is het type dat wordt geretourneerd door
‫get op een locatie en we gaan deze huidige locatie noemen en we stellen dat gelijk aan het resultaat van de expressie, krijgen actorlocatie en vervolgens worden haakjes
‫ingesteld van overeenkomende haakjes en vervolgens een puntkomma om de regel te beëindigen.
‫Dus als we deze regel een beetje ontleden, kunnen we zien dat dit stukje hier, de locatie van de act en de
‫haakjes de uitdrukking is dat het ons de waarde geeft, wat de huidige locatie van de acteur is.
‫Dan doen we een opdracht naar de huidige locatie, die hier ook wordt aangegeven.
‫Dus op deze regel is deze hele regel geen uitdrukking.
‫Het heeft geen waarde, het is een statement.
‫En meestal kun je een statement vertellen omdat het in C++ eindigt op een puntkomma.
‫Oké, dus dit stelt ons in wezen in staat om de my-vector en lokale vectoren die we
‫eerder gebruikten af te schaffen, omdat we gewoon onze lokale variabele hier zouden moeten kunnen updaten,
‫deze huidige locatie die we hebben van de locatie van onze acteur.
‫Dus wat we gaan doen is verderop hier, we hebben een opmerking die zegt: stel de locatie in.
‫Dus na die commentaarregel ga ik een acteurslocatie instellen met behulp van de uitdrukking huidige locatie, die alleen die variabele waarde gebruikt en dan een puntkomma aan het
‫einde van de regel plaatsen om te zeggen dat dit hele ding
‫een verklaring is.
‫We willen dat het deze actieset op een locatie uitvoert en merk op dat ik, terwijl mijn opmerkingen zijn ingesprongen, heb
‫besloten om de code niet te laten inspringen, omdat we dat meestal willen.
‫Codes moeten op één inspringingsniveau binnen de functie staan.
‫Wat ik nu kan doen, is dat ik alle code kan verwijderen die we eerder hadden, alles met lokale vector, mijn vector
‫ingesteld op een locatie met behulp van de lokale vector, ik kan dat allemaal verwijderen.
‫Zodat alles wat we nu hebben de dingen rond onze opmerkingen zijn.
‫En ik ga ook naar het header-bestand en maak de dingen hier een beetje op.
‫We hebben de mijn vector niet meer nodig.
‫We hebben de my ex u-eigendommen niet meer nodig.
‫Deze ga ik dus ook verwijderen.
‫Het is duidelijk dat het bewegende platform CP niet echt veel doet, omdat we de huidige acteurslocatie
‫krijgen, dan stellen we deze opnieuw in, wat in feite geen effect heeft.
‫Dus ik zou graag willen dat je de huidige locatie van het bewegende platform bijwerkt in die vinkfunctie.
‫Gebruik dus de X- of Y-leden zoals u wilt.
‫Wel, X gaat vooruit.
‫Y zal je naar rechts verplaatsen, dan kun je er iets aan toevoegen en weer toewijzen aan het lid, zoals we eerder hebben gedaan,
‫om de locatie van onze bewegende platformen bij te werken.
‫Dus voeg een of twee toe, afhankelijk van hoe snel je het platform wilt laten bewegen en verplaats het platform dan
‫naar de startlocatie, want nu hebben we die lidvariabele niet om het de startlocatie
‫te vertellen, we gebruiken eigenlijk de huidige locatie.
‫Dus waar je dat platform ook plaatst, daar begint het platform.
‫En dan wil ik dat je je code compileert en test en kijkt of het beweegt, zoals je zou verwachten.
‫Pauzeer de video en probeer het.
‫Oké.
‫Welkom terug.
‫Dus we gaan deze regel code net onder de opmerking plaatsen die erover gaat, vector
‫toevoegen aan die locatie.
‫En de reden dat we het hier plaatsen is vanwege de volgorde waarin we de huidige locatie willen
‫ophalen, bijwerken en vervolgens instellen.
‫We willen niet dat daar iets misgaat.
‫Als we het zouden updaten voordat we de variabele maakten, nou, die variabele zou niet bestaan.
‫Onthoud dat het een lokale variabele is.
‫Het bestaat pas als we het binnen deze specifieke aanroep van de functie hebben gemaakt.
‫En als we het hadden gedaan nadat we weer op een locatie waren ingesteld, zou die wijziging gewoon worden
‫weggegooid als we bij de afsluitende Brice in de functie kwamen.
‫Dus we gaan de huidige locatie punt x instellen, ik gebruik gelijk aan de huidige locatie, punt x plus één en
‫plaats dan een puntkomma aan het einde van de regel.
‫En we gaan terug naar Unreal en we gaan op de compileerknop drukken.
‫En zoals ik al zei, we moeten dit bewegende platform nu naar zijn startlocatie verplaatsen.
‫Dus ik ga op een personage van een derde persoon klikken en ik ga zijn locatie kopiëren door met de rechtermuisknop op de locatie te klikken, op
‫kopiëren te drukken, dan naar ons bewegende platform te gaan, met de rechtermuisknop op de locatie te klikken en op
‫plakken te drukken.
‫Dus dat plaatst het platform precies in onze speler, wat eigenlijk niet is wat we willen.
‫Dus ik ga het zo iets naar rechts van de speler verplaatsen en ik kan zien of het op de juiste hoogte
‫is.
‫Ik denk dat ik het een beetje lager zal maken, wat een van de voordelen is van het gebruik van de huidige locatie
‫in plaats van een locatievariabele, is dat ik echt kan zien waar dit platform in de wereld zal
‫zijn.
‫Dus als ik nu doorga en op play druk, dan kun je zien dat het platform het mooi in
‫de X-richting beweegt.
‫Ik kan er nog steeds op springen en mee bewogen worden.
‫Goed spul.
‫Nu hebben we geleerd hoe retourwaarden werken uit functies.
‫We beginnen echt veel van de concepten uit blauwdrukken in de C++-wereld te begrijpen.
‫Ik zie je in de volgende lezing.