‫Hallo en welkom.
‫In deze lezing gaan we onze eigen klassenlidfuncties implementeren, platform verplaatsen en platform
‫roteren.
‫We gaan kijken hoe we ze zo kunnen opzetten dat ze argumenten kunnen opnemen.
‫En het zal ons helpen onze code een beetje op te ruimen.
‫Laten we erin duiken en kijken hoe dit werkt.
‫Dus tot nu toe hebben we de C++-functies gebruikt die al voor ons zijn gemaakt.
‫We hebben deze gebruikt en we kunnen spelen in termen van het schrijven van hun functionaliteit.
‫En we hebben ook functies gebruikt die andere mensen voor ons hebben geschreven.
‫We hebben ze gebeld, zoals actieve locatie krijgen en naam krijgen.
‫Hoe kunnen we nu nieuwe eigen functies maken om onze code te organiseren en deze functies klein en
‫alles veel leesbaarder te houden?
‫Welnu, we hebben de basisbouwstenen al op hun plaats door tegen het einde van de sectie te komen.
‫We begrijpen veel meer over de C++-syntaxis.
‫Dus wat ik wil doen, is in wezen een nieuwe functie op het bewegende platform creëren waarmee we alleen
‫een intake kunnen hebben, bijvoorbeeld call move platform.
‫Waarom wil ik dat doen?
‫Omdat het mogelijk is om een functie-aanroep als deze genaamd MOVE Platform te doen, past het echt bij wat
‫we op dit moment proberen te doen.
‫We hebben veel te maken met technologie en het is me niet helemaal duidelijk waarom we dit allemaal doen als ik hem
‫even kom bekijken, als ik de technologie in ga en een functie zie met de tekst Verplaats platform , dan heb ik
‫opeens de context voor wat al deze dingen zouden moeten doen, en ik heb geen enkele opmerking nodig
‫om me te vertellen wat er aan de hand is.
‫Dit zal vooral handig zijn als we de mogelijkheid toevoegen om het platform ook te
‫draaien.
‫Dus hoe definiëren we declaratiefuncties?
‫Welnu, het declaratieaspect wordt in de kop van het bestand gedaan.
‫Dat is waar we eigenlijk zeggen dat we naar C++ gaan, we gaan een functie hebben die er ongeveer zo
‫uit gaat zien.
‫En dan in de C ++ is waar we de functie daadwerkelijk definiëren.
‫We geven het de body, we vertellen het precies aan C++.
‫Zo werkt de functie.
‫En laten we eens kijken hoe we dit kunnen doen.
‫We hebben een paar voorbeelden van functies en we hebben grote in het spel, we hebben technologie.
‫En het is een goed moment voor ons om te kijken naar de verschillende secties die we in een headerbestand hebben.
‫We hebben openbaar en beschermd dat hier wordt vermeld en openbaar wordt opnieuw genoemd.
‫Wat betekent dit nu?
‫Deze sleutelwoorden met de dubbele punt aan het einde definiëren in feite een deel van toegankelijkheid.
‫Deze functies, waar vandaan ze toegankelijk zijn.
‫We hebben gezien dat het veilig is normaal.
‫Dit is een functie die we aanroepen op een F-vector, maar we roepen deze aan vanuit een andere klasse,
‫niet vanuit een F-vector.
‫Dit betekent dus dat de toegankelijkheid van deze functie openbaar moet zijn.
‫Nu laten we het even terzijde omdat het daar een beetje ingewikkelder wordt.
‫Maar er is nog een ander type trefwoord dat we kunnen gebruiken, namelijk privé.
‫Dus ik ga na take toevoegen, ik ga de private keyword-notificatie toevoegen dat ik deze secties niet laat inspringen en
‫we gaan een dubbele punt aan het einde zetten.
‫En dat betekent dat alles wat daarna komt tot de volgende sectie, het volgende sleutelwoord
‫dat ik hier invul, privé zal zijn.
‫Dus dat betekent dat we al deze variabelen hebben genomen en hebben gezegd: Hé, geen enkele andere klas mag deze
‫aanraken.
‫En dat is meestal de beste gewoonte die we tot nu toe niet hebben gedaan, omdat ik de dingen niet
‫een beetje te verwarrend voor je wilde maken.
‫Maar variabelen in klassen zouden over het algemeen hun eigen zaak moeten zijn.
‫Het is een van de belangrijkste huurders van objectgeoriënteerd programmeren dat we klassen overlaten om hun eigen variabelen te beheren,
‫en we hebben er alleen toegang toe met functies waarvan de klasse aangeeft dat ze openbaar zijn.
‫Dus wat we hier gaan doen, is dat we hier wat meer privé-functies gaan toevoegen, omdat we
‫niet willen dat zoiets als Move Platform van buiten de klas wordt aangeroepen.
‫We willen dat het wordt beheerd door onze eigen technische functie.
‫Dus hoe definiëren we een privéfunctie?
‫Nou, we hebben het in een privégedeelte geplaatst.
‫Dus we hebben hier ons privésleutelwoord.
‫Ik ga het echter achter onze variabelen plaatsen en we beginnen met het retourtype.
‫En als onze functie niets retourneert, typen we gewoon void om aan te geven dat er geen terugkeer uit deze
‫functie komt.
‫Dan geven we het een functienaam.
‫Dus we hadden platform verplaatsen was wat we wilden en dan geven we het een paar haakjes om aan te geven dat dit een functie is, we openen
‫en sluiten haakjes en dan een puntkomma om de regel af te maken en te zeggen, oké, dat is
‫het.
‫Dat is de functie die ik hier in het headerbestand wil declareren en dat alles.
‫Er staat Dit is de vorm van de functie.
‫Dit is de terugkeer.
‫Dit is welke parameters het nodig heeft en de naam en tot welke klasse het behoort.
‫Om het nu daadwerkelijk een implementatie te geven, moeten we het in het C++-bestand definiëren.
‫Dus laten we daarheen gaan.
‫En aan het einde van het bestand, net buiten eventuele accolades, doen we het hier.
‫We beginnen opnieuw met het retourtype.
‫Dus dat wordt dan ongeldig omdat we ons in een C++-bestand bevinden, we zitten niet tussen de accolades van
‫een klasse.
‫We moeten de scope resolutie-operator gebruiken om te zeggen dat we een functie proberen te definiëren vanuit de klasse
‫bewegend platform.
‫Dus we typen de naam van de klasse, wat een bewegend platform is, en onthouden dat er een voorvoegsel is om te zeggen dat
‫het een acteur is.
‫Vervolgens gebruiken we dubbele punt, dubbele punt, de operator voor bereikresolutie, en dan gebruiken we de naam
‫van de functie die we definiëren, namelijk het MOVE-platform.
‫En dan gebruiken we dezelfde set parameters als in het headerbestand.
‫In dit geval hadden we een lege set parameters, dus we hebben alleen de haakjes.
‫En in plaats van een puntkomma aan het einde van deze regel op een nieuwe regel te plaatsen, plaatsen
‫we een accolade openen en een bijbehorende accolade sluiten.
‫En tussen deze accolades waar we de code voor onze functie zetten, fantastisch.
‫Dus wat ik nu wil doen, is proberen te zeggen, nou, al deze functionaliteit die we hier hebben, en in feite ga
‫ik de opmerkingen verwijderen omdat we ze niet langer nodig hebben.
‫Het was de pseudocode die we gebruikten om dit te implementeren, maar nu heeft het zijn doel gediend.
‫We begrijpen wat de coderegels doen.
‫Ik ga alles behalve de platformfunctie verplaatsen uit de take halen en kopiëren en in plaats daarvan
‫in onze MOVE-platformfunctie plakken.
‫Dus dit zou ongeveer hetzelfde moeten werken, want als we de technologie ingaan, noemen we move platform en het
‫draait gewoon hetzelfde stukje code.
‫Alleen hebben we het nu gebundeld in een functie en het maakt het voor ons gemakkelijker om te lezen en mogelijk opnieuw te gebruiken
‫in de toekomst.
‫Maar als u dit doet, zult u merken dat er een probleem is.
‫We hebben toegang tot Delta-tijd en dat is een parameter waar we geen toegang meer toe hebben omdat het een parameter was die in de
‫technologie werd doorgegeven.
‫Dus als we dat willen bemachtigen, moeten we wel een parameter in onze functie hebben.
‫Dus als we parameters definiëren, moeten we dat op twee plaatsen doen.
‫Net zoals wanneer we de functie definiëren, gaan we terug naar het headerbestand en
‫tussen de haakjes van onze MOVE-platformfunctie.
‫Dit is waar we zeggen welke parameters we willen en het is precies hetzelfde als het definiëren van een variabele.
‫Je moet het een type geven en het een naam geven.
‫Dus we gaan zeggen dat het een type float zal zijn en we kunnen het gewoon Delta-tijd noemen.
‫Het hoeft niet dezelfde naam te zijn.
‫Zo zouden we het kunnen noemen.
‫We zouden het tijd kunnen noemen.
‫Maar het is gemakkelijker om het dezelfde naam te geven, want dan is het voor iedereen die het leest duidelijk wat hier moet
‫worden doorgegeven.
‫Vervolgens moeten we in het C ++ -bestand overeenkomen met de lijst met parameters.
‫Dus nogmaals, je kunt dit gewoon doen door te kopiëren en plakken of door het uit te typen.
‫Als je het uittypt, zorg er dan voor dat je geen typefouten maakt, want de compiler zal klagen.
‫Dus we zullen een float genaamd Delta Time laten doorgeven als parameter of gedefinieerd als een parameter om platform
‫te verplaatsen, maar we hebben het niet echt doorgegeven als argument om platform in tick te verplaatsen.
‫En je zult zien dat ik hier een klein rood kronkelig lijntje heb, heel, heel.
‫Het zegt dat er te weinig argumenten zijn in de functie-aanroep omdat ik het heb gedefinieerd in het header-bestand en
‫nu in de C++ en ook omdat ik één parameter van het type float nodig heb.
‫Dus ik moet die parameter opgeven.
‫Dus ik ga ervoor zorgen dat dit de parameter is die ik opgeef.
‫De waarde die ik opgeef, is afkomstig van de Delta-tijdvariabele of Delta-tijdparameter van tick.
‫Dus we zijn de waarde aan het threaden, de waarde wordt doorgegeven aan het vinkje,
‫wordt dan doorgegeven aan het verplaatsingsplatform en komt terecht in een parameter in de MOVE-platformfunctie waar het kan worden gebruikt om platformfunctionaliteit uit te voeren en
‫te verplaatsen.
‫Dus ik zou graag willen dat je je eigen roteerplatform-functie maakt die we gaan aanroepen vanuit TIC.
‫Dus je gaat het toevoegen aan het headerbestand zoals we hebben gedaan voor onze MOVE-platformfunctie.
‫We gaan het ook op dezelfde manier aan het C++-bestand toevoegen.
‫Dus haal je hints uit de manier waarop we het voor die functies hebben gedaan en roep het dan op vanuit de vinkfunctie.
‫Zorg ervoor dat u in Delta-tijd passeert en dat u eventuele parameters definieert waarmee u in de
‫Delta-tijd kunt passeren en de body van het Rotate-platform implementeert zodat het een bericht uitlogt.
‫Het gaat het platform nog niet echt draaien, maar als een tijdelijke aanduiding om ervoor te zorgen dat
‫dat daadwerkelijk een logbericht wordt genoemd met behulp van het UI-log waarover we hebben geleerd.
‫Pauzeer de video en probeer het.
‫Oké.
‫Welkom terug.
‫We beginnen dus in het headerbestand en we zullen meestal hetzelfde doen als voor
‫ons MOVE-platform.
‫We gaan het in een privégedeelte plaatsen, zodat het alleen binnen onze klas toegankelijk is.
‫Ik ga het een ongeldig retourtype geven, we gaan het een roterend platform noemen.
‫We gaan de parameterlijst openen.
‫En daarin gaan we één parameter plaatsen met het type
‫float, we gaan het Delta-tijd noemen en de parameters sluiten en eindigen met een puntkomma.
‫Nu is het meeste van wat we doen in het C++-bestand precies hetzelfde als in de kop van het bestand.
‫Dus ik ga deze regel eigenlijk kopiëren, naar het C++-bestand gaan en je laten zien wat er anders is.
‫Dus ik ga naar een nieuwe lege regel aan het einde van het bestand, plak het erin, en wat anders
‫is, is dat we hier de scope-resolutie-operator en de klassenaam nodig hebben.
‫Dus we krijgen een bewegend platform, dubbele punt, dubbele punt roterend platform.
‫Dan hebben we de parameterlijst en dan hebben we de puntkomma aan het einde niet nodig.
‫Dus verwijder de puntkomma, voeg een nieuwe regel toe en val accolades aan in plaats van een nieuwe regel tussen
‫die twee accolades.
‫Dus wat we hier willen doen, is een logbericht afdrukken.
‫Dus ik ga je log typen, druk op enter.
‫Het wordt gewoon een eenvoudig displaybericht.
‫En in de tekst ga ik de naam van ons platform zetten.
‫Dus het wordt procent s, dan gaan we roterende punt, punt, punt typen, en dan ga ik
‫de naam doorgeven.
‫We zouden dit in een variabele kunnen zetten, maar omdat het hier een vrij
‫korte regel is, typ ik ster, get name en plaats dan de haakjes zodat we hier in wezen de get-naam
‫noemen.
‫Dat is de uitdrukking die de string in handen krijgt.
‫En dan zetten we dat resultaat om in ons logbericht.
‫Dus van al onze platforms verwacht ik dat roteren wordt afgedrukt, maar dit zal alleen gebeuren als ik het
‫echt in tech noem.
‫Dus laten we naar de tick-functie gaan nadat MOVE-platform een nieuwe regel kan toevoegen en het rotatieplatform kan aanroepen.
‫En we moeten het zien.
‫Als ik de haakjes open, krijg ik een hint dat ik een argument voor Delta-tijd moet doorgeven.
‫Dus nogmaals, we gaan gewoon diezelfde Delta-tijdvariabele van binnenuit passeren.
‫En zoals ik al zei, de namen hier hoeven niet hetzelfde te zijn.
‫Dus deze delta-tijd moet overeenkomen met de Delta-tijd binnen tech.
‫Maar we kunnen ervoor kiezen om in plaats daarvan de variabele binnen de roteerplatformdatum aan te roepen.
‫En overal waar we het gebruiken binnen het rotatieplatform, zouden we ADT moeten gebruiken, de naam van de parameter, en
‫het argument kan in principe anders zijn.
‫Dus laten we naar Unreal gaan en op compileren klikken omdat we enkele wijzigingen hebben aangebracht in het headerbestand.
‫De compilatie zal iets langer zijn dan toen we net het C++-bestand veranderden en als dat eenmaal klaar is met
‫compileren, gaan we verder en gaan we op play klikken en het uitvoerlogboek openen.
‫En je kunt zien dat we inderdaad logberichten weergeven over elk van de roterende platforms.
‫Het lijkt er dus op dat onze functie effectief wordt aangeroepen in tech.
‫Goed spul.
‫Nu begrijpen we hoe we onze eigen functies kunnen maken die lid zijn van een klasse.
‫Het is een erg handig hulpmiddel om een code opnieuw te gebruiken, maar ook om het te organiseren zoals het was in Blueprint.
‫Ik zie je in de volgende lezing.