‫Hallo en welkom.
‫In deze lezing gaan we leren over functies die niet in de niveaublauwdrukken voorkomen,
‫maar in een bepaalde blauwdrukklasse.
‫Dit worden lidfuncties genoemd en zijn absoluut cruciaal voor objectgeoriënteerd programmeren.
‫Laten we erin duiken en kijken hoe ze werken.
‫Dus in onze spawn-projectielfunctie in de niveaublauwdrukken, hebben we hier een heleboel knooppunten met betrekking tot het toevoegen van de impuls, het
‫verkrijgen van de richting van de impuls en het verkrijgen van de statische mesh-component.
‫Al deze knooppunten maken diepgaand gebruik van de BP-projectielinstantie.
‫Zou het niet geweldig zijn als we al deze code konden nemen en naar het BP-projectiel konden verplaatsen, zodat de
‫code die met die gegevens omgaat, bij de gegevens zelf hoort?
‫Dat is het hele punt van objectgeoriënteerd programmeren.
‫We kunnen objectgeoriënteerd programmeren dus definiëren als functies die leven met de gegevens die ze manipuleren.
‫Dus hoe werkt dit?
‫Hoe kunnen we functies maken voor bepaalde instanties van dingen?
‫Welnu, een manier waarop we dit kunnen doen, kunnen we gaan om onze BP-projectielklasse te openen en
‫ervoor te zorgen dat we klikken op de volledige blauwdrukeditor openen. Je kunt zien dat er in deze volledige
‫blauwdrukeditor een mijn blauwdruk-paneel en een functiesectie is dus we kunnen hier op de pluspijl drukken om een nieuwe functie op de BP-projectielklasse te
‫creëren.
‫En ik ga deze functie een naam geven, print je naam en dit print je naam.
‫Functie zou precies dat moeten doen.
‫We kunnen zien dat we een knooppunt hebben dat de uitvoering bij deze functie start, zodat we de
‫uitvoeringspen kunnen verwijderen en de afdrukreeks kunnen typen.
‫Dus dat gaat uitprinten.
‫Hallo.
‫Niet bepaald de naam van deze functie, toch?
‫Maar dat lossen we zo op.
‫Dus wat we hier hebben, staat bekend als een ledenfunctie.
‫Een lidfunctie is een functie op een klasse die altijd wordt aangeroepen op een bepaalde instantie van een klasse.
‫Dus je zegt niet, ik ga je naam roepen of printen op alle BP-projectielen.
‫Je moet zeggen, ik wil bellen, je naam afdrukken op BP-projectiel nummer één, of BP-projectiel dat
‫net is voortgebracht.
‫Dus als we naar onze niveaublauwdruk gaan, zou je de referentie moeten nemen die uit het
‫spawn BP-projectiel kwam.
‫En vanuit die referentie zou je print je naam kunnen noemen en je kunt zien dat het automatisch verbinding
‫maakt met een speciale invoernotitie genaamd Target.
‫En natuurlijk moet je ook je executiepinnen aansluiten.
‫Ik ga het aansluiten om te gebeuren nadat ik impuls heb toegevoegd.
‫Maar wat interessant is aan dit speciale doelinvoerknooppunt, is dat als je naar het BP-projectiel gaat, je die
‫afdruk ziet.
‫Uw naam heeft zo'n invoerbelasting niet.
‫Dus wat is hier aan de hand?
‫Welnu, impliciet heeft elke lidfunctie een parameter die het huidige doel of de huidige instantie is.
‫En u kunt dit verkrijgen door met de rechtermuisknop in de blauwdrukgebeurtenisgrafiek te klikken en zelf te typen.
‫En je kunt zien dat er een knooppunt is dat een verwijzing naar zichzelf krijgt, en het creëert gewoon een zelfknooppunt zoals
‫dit.
‫En dan kunt u deze zelfobjectreferentie gebruiken om een van de eigenschappen van dit specifieke object te verkrijgen.
‫Dus als we de naam van ons BP-projectiel willen bemachtigen, kun je de zelfreferentie gebruiken en
‫de get-weergavenaam typen, wat we eerder hebben gedaan.
‫En dan kunt u de weergavenaam aansluiten op onze printstring.
‫Dus als we nu spelen en we schieten een nieuw projectiel af, kun je zien dat het de naam van
‫het projectiel afdrukt en je kunt zien of elk nieuw projectiel een andere naam heeft, omdat het
‫zelf waarnaar wordt verwezen door de lidfunctie is een ander zelf is een ander projectiel.
‫We hebben dus geleerd dat self een knooppunt is dat beschikbaar is binnen een lidfunctie en dat altijd verwijst
‫naar de specifieke huidige instantie die we gebruiken.
‫Dus het hele punt van kijken naar lidfuncties in de eerste plaats, de reden dat we begonnen waren
‫vanwege deze knooppunten in de niveaublauwdrukken, de manier waarop we de statische puree krijgen, we krijgen de voorwaartse vector en
‫dan voegen we er een impuls aan toe.
‫Deze hebben het gevoel dat ze op het BP-projectiel zouden moeten leven.
‫En daarom wil ik je graag uitdagen om te doen.
‫Dus dit is een beetje een ingewikkelde aanklacht, maar we komen aan het einde van de sectie.
‫Daarom neem ik je stap voor stap mee.
‫Dus ga een lanceringsfunctie maken.
‫Schijn op het BP-project, ook gemaakt op de BP-projecten.
‫Ik ga naar die plusdelen en voeg een nieuwe toe.
‫Noem het lancering.
‫Knip en plak vervolgens de knooppunten van de niveaublauwdrukken in deze nieuw gecreëerde functie van u en zorg
‫ervoor dat u uitvoeringspinnen en dergelijke aansluit.
‫Nu ga je proberen te compileren.
‫We hebben dit niet vaak gedaan in blueprints, maar compileren stelt je gewoon in staat om
‫de spelling van je code te controleren en ervoor te zorgen dat er geen fouten zijn die de Blueprint-compiler kan voorzien.
‫Dus de manier waarop je dit doet, is door naar de knop linksboven te gaan en op compileren te drukken, en
‫als er fouten zijn, verschijnen ze onderaan in het kleine venster met de naam compilerresultaten.
‫Je kunt zien dat het compileren gelukt is, maar eventuele fouten zullen hier verschijnen en soms krijg je een klein
‫beetje rood op een knooppunt om aan te geven waar de fout zit.
‫En ik zou graag willen zien of je kunt proberen te begrijpen wat die fout zegt en proberen de fout op
‫te lossen met behulp van het nieuwe zelfknooppunt waarover we hebben geleerd.
‫En dan moet je doorgaan en die functie aanroepen vanuit de niveaublauwdrukken door de instantie weg te slepen zoals we
‫deden voor ons zelfdrukknooppunt, van de instantie van het nieuwe projectiel te slepen dat is gemaakt vanaf het
‫spawn-knooppunt en de startfunctie aan te roepen.
‫Pauzeer de video en probeer het.
‫Oké.
‫Welkom terug.
‫Dus ik ga naar ons BP-projectiel, druk op de plusknop naast functies in het mijn blauwdruk-paneel
‫en typ launch om de functie een naam te geven waarmee we teruggaan naar onze niveaublauwdruk, knip de knooppunten
‫uit en ga naar de BP-projectiel en plak ze erin.
‫Nu moet ik de uitvoering van de lancering aansluiten om impuls toe te voegen en nu ga ik slaan,
‫compileren en je ziet dat ik een fout krijg op de statische mash of een statische mash-node krijg.
‫En als je in de compilerresultaten kijkt, staat er dat het een ongeldig doel gebruikt.
‫Dus doel deze invoer hier is niet correct.
‫Nu, zoals ik je heb aanbevolen, kun je met de rechtermuisknop klikken en zelf typen om een verwijzing naar jezelf te krijgen en in
‫plaats daarvan dat zelf in het doel te brengen.
‫Als je nu opnieuw op compileren drukt, kun je zien dat de fout is verdwenen en met
‫succes is gecompileerd, want wat er aan de hand is, is dat het nu in staat is om de statische componenten van het huidige projectiel te krijgen.
‫Deze startfunctie wordt aangeroepen.
‫Dus als we nu teruggaan naar onze niveaublauwdrukken, kunnen we de uitvoerpin van onze spawn-acteur nemen en kunnen we de
‫lancering typen om onze startfunctie op te roepen.
‫Je kunt zien dat de uitvoeringspin automatisch voor mij is aangesloten en na de startfunctie kunnen we onze
‫functie voor het afdrukken van je naam aansluiten als we dat willen, hoewel dat alleen voor foutopsporings- en
‫demonstratiedoeleinden was en als je het uittest, je kan zien dat het nog steeds met succes wordt gelanceerd, behalve
‫nu de code die zich bezighoudt met het lanceren van levens op het projectiel zelf.
‫Goed spul.
‫We hebben in deze lezing lidfuncties geleerd over een van de kernconcepten van objectgeoriënteerd programmeren.
‫Ik zie je in de volgende.