‫Hallo en welkom.
‫In deze lezing gaan we onze puinhoop van blauwdrukken nemen en het netjes organiseren in functies, zodat
‫we gemakkelijk kunnen lezen en begrijpen wat er gaande is in onze Blueprint Event-grafiek.
‫Laten we erin duiken en kijken hoe we dit kunnen doen.
‫Als we nu uitzoomen op onze gebeurtenisgrafiek, kunnen we zien dat het erg luidruchtig begint te worden.
‫Ik kan ook een paar knooppunten zien die nergens op zijn aangesloten.
‫Er is een munitieknooppunt voor ophalen, dat ik ga verwijderen en een munitieknooppunt instellen, maar je kunt zien dat het erg
‫luidruchtig wordt.
‫Het wordt steeds moeilijker te begrijpen wat hier aan de hand is.
‫Nu, een typische oplossing die mensen doen, is zeggen: Nou, dit blok knooppunten hier gaat helemaal over het spawnen van het
‫projectiel.
‫Deze kan ik dus selecteren.
‫Ik kan op de C-toets drukken en er wordt een blok omheen geplaatst, een commentaarblok genoemd.
‫En dan zou ik spawn-projectielen kunnen typen en dat laat me weten wat dat codeblok aan het doen is.
‫Dat is zeker een manier om je code te ordenen.
‫Naar mijn mening is dit echter niet de beste manier en we hebben betere tools om dit, functies genaamd, te doen.
‫Dus wat alle functies?
‫Functies voeren blauwdrukblokken uit en zorgen ervoor dat onze games dingen doen.
‫Veel knooppunten die door Unreal worden geleverd, zijn eigenlijk al functies.
‫Deze zijn we dus tegengekomen.
‫Wanneer je gaat inzoomen, bijvoorbeeld op onze spawn-acteur projectielknooppunt, is dat een functie.
‫Als we kijken naar impuls toevoegen, dat is een functie voor in feite bijna elk van deze knooppunten, zelfs dingen
‫als een actieve vector die geen uitvoeringspedaal heeft, is niet blauw, is ook een functie
‫die je kunt zien omdat het een klein f-symbool linksboven dat staat voor functie, maar we zijn niet beperkt tot de
‫functies die Unreal biedt.
‫We kunnen ook onze eigen functies maken, en het is heel gemakkelijk om in blauwdrukken te doen.
‫Ze stellen ons in staat om georganiseerd te blijven en ze stellen ons in staat om codeblokken opnieuw te gebruiken.
‫Dus dat is beter dan een opmerking, want een opmerking moet je kopiëren en plakken.
‫Terwijl een functie ons in staat stelt om één codeblok te delen tussen meerdere gebruiksplaatsen.
‫Laten we eens kijken hoe we zoiets kunnen omzetten in een codeblok.
‫Wel, we kunnen het commentaarblok eerst verwijderen, omdat ik denk dat dat niet nodig is.
‫In plaats daarvan ga ik alle knooppunten selecteren van krijgt spelen a -- helemaal om impuls toe te voegen, klik er
‫met de rechtermuisknop op en selecteer samenvouwen om te functioneren.
‫En dat creëert een nieuw blok en vervangt al die eerdere knooppunten die er eerder waren.
‫Nu ga ik deze functie krijgen, een naam die je kunt zien in het linkerdeelvenster.
‫Het heeft een nieuwe functie gemaakt onder de functiesectie in het mijn blauwdruk-paneel en het heeft het voor
‫mij geselecteerd om automatisch te hernoemen, omdat we deze functies zeker, zeker moeten hernoemen
‫en ik ga het spawn-projectiel noemen.
‫En een goede naamgeving is absoluut essentieel bij het programmeren, omdat code in wezen draait om communicatie.
‫We proberen met onszelf te communiceren zodat we kunnen begrijpen wat we hebben geschreven.
‫We proberen in de toekomst met onszelf te communiceren.
‫Als we terugkomen op dit project en ik ben vergeten waarom we het op een bepaalde manier hebben geschreven, en als
‫je in teams werkt, probeer je ook met de rest van je team te communiceren.
‫Sommigen zeggen dat een goede maatstaf voor codekwaliteit de waarde per minuut is.
‫Dus als je een stukje code aan het lezen bent en je gaat, wat maakt het uit, 50 keer per minuut, dat is behoorlijk
‫slechte code als je het leest en alleen gaat, wat maakt het uit, een of twee keer per minuut, dan
‫dat is waarschijnlijk een behoorlijk goede code en je zult altijd wat krijgen, wat maakt het uit?
‫Dus we proberen alleen het aantal dat functioneert te verminderen.
‫Cruciaal is dat we de neiging hebben om functies als werkwoorden te benoemen.
‫Er zijn enkele uitzonderingen op deze regel waar we het later over zullen hebben, maar meestal zijn functies dingen
‫die iets doen.
‫Dus we gebruiken doe-woorden en als je niet zeker weet hoe je deze functie moet noemen, als je in een team werkt, kun je
‫gewoon met iemand anders praten en hen vragen wat ze denken dat je het moet noemen en
‫wat voor soort dingen voor hen zinvol zijn.
‫Je merkt vaak dat je zo diep in een probleem zit dat je niet kunt bedenken hoe je erover kunt praten.
‫Dus je vraagt je misschien af: waar is al mijn code gebleven toen ik deze spawn-projectielfunctie
‫maakte?
‫Welnu, u kunt teruggaan naar dat detail van hoe deze functie daadwerkelijk is geïmplementeerd door erop te dubbelklikken in de
‫gebeurtenisgrafiek of erop te klikken in het tabblad Mijn blauwdrukken of erop te dubbelklikken op het tabblad
‫Mijn blauwdrukken.
‫En je kunt zien dat al onze knooppunten hier nog steeds aanwezig zijn, ze staan nu op een
‫apart tabblad, zodat je terug kunt gaan naar je evenementgrafiek-tabblad of je kunt duiken naar het Spawn-projectiel-tabblad dat precies dat
‫ene laat zien functie.
‫En je kunt zien dat er hier een nieuw knooppunt is, dit kleine paarse knooppunt, dat het toegangspunt is tot onze
‫functie.
‫Dit zegt dat dit is wat we moeten doen wanneer de functie start.
‫Het is gewoon een instappunt.
‫En wanneer het wordt aangeroepen, zal dat knooppunt alle andere knooppunten binnen onze functie activeren en
‫activeren.
‫Dus terug naar de gebeurtenisgrafiek en.
‫Uitzoomen, misschien wat anodes samenbrengen nu we onze knooppuntgrafiek zo veel kleiner en gemakkelijker leesbaar
‫hebben gemaakt.
‫Ik denk dat er hier nog een paar kandidaten zijn om functies te schrappen en dingen te vervangen.
‫Een daarvan zou zijn waar we munitie aan het printen zijn.
‫Dus in dit geval is het printen van munitie iets dat we op twee plaatsen doen.
‫We doen het in beginspel en we doen het in een spawn-projectiel.
‫En dan de andere plaats, het andere, stuk functionaliteit dat we in een functie zouden kunnen extraheren, zou
‫zijn waar we de munitie verminderen die in plaats daarvan in een functie voor het verminderen van munitie zou kunnen worden gestopt.
‫Dus net voordat ik je de uitdaging stel, wil ik het conversieknooppunt verwijderen en het tekenreeksknooppunt
‫afdrukken na het spawn-projectiel, omdat dit de zaken gaat compliceren.
‫Ik zou de functionaliteit van bovenaf willen kopiëren, zodat ze er allebei precies hetzelfde uitzien.
‫Dus als we de drie knooppunten van Begin Play kopiëren en ze hieronder plakken en de uitvoeringspinnen verbinden, dan kun je
‫zien dat we precies dezelfde set knooppunten hebben, dezelfde functionaliteit hadden tussen de twee, en er
‫is geen verwarring wanneer we komen om dit in functie te extraheren.
‫Daarom wil ik je uitdagen om nog wat functies te maken.
‫De eerste die ik zou aanraden om te doen, is het verminderen van munitie.
‫Dus de drie knooppunten nemen die betrokken zijn bij het verminderen van munitie, die extraheren in een functie en ze een
‫naam geven.
‫En dan is de tweede print munitie.
‫Dus daar ga je de functionaliteit van het verkrijgen, converteren en afdrukken van de munitie extraheren
‫in een enkele functie.
‫En omdat we twee sites hebben waar we munitie printen, wil je er een verwijderen en in plaats
‫daarvan de functie gebruiken, wat je kunt doen door te slepen vanuit het mijn blauwdruk-paneel.
‫En dan hebben we eindelijk een paar welkomstberichten, output van welkomstberichtknooppunten.
‫U kunt deze ook extraheren in een functie voor het afdrukken van welkomstberichten.
‫Pauzeer de video en probeer het.
‫Oké.
‫Welkom terug.
‫Dus we gaan eerst onze verminderde munitie halen.
‫Er zijn dus drie knooppunten bij betrokken die met de rechtermuisknop op de functie zullen klikken.
‫Dan gaan we het munitie verminderen noemen en dat is vrij eenvoudig.
‫Dus spawn projectielen, verminder munitie en dan printen we de munitie.
‫Dus laten we de drie knooppunten nemen, de get convert en print string en we gaan met de rechtermuisknop
‫op de functie klikken en deze ene print munitie noemen.
‫Zoals ik al zei, we hebben deze functionaliteit op twee plaatsen herhaald, dus we zullen
‫verwijderen waar het dit doet en beginnen met plaat en gewoon print munitie uit onze functielijst slepen en de uitvoeringspinnen
‫verbinden zodat het loopt na onze tekenreeks afdrukken.
‫Dat brengt me bij de laatste functie die ik wil maken, waarvan we zeiden dat het welkomstberichten voor afdrukken zal noemen.
‫Dus ik ga de twee afdrukreeksen selecteren.
‫Ik moet samenvouwen beginnen om te functioneren en het welkomstberichten afdrukken te noemen.
‫En dit knooppunt kunnen we nu al onze knooppunten herschikken om het veel gemakkelijker te maken om dit allemaal in één scherm vol
‫te lezen.
‫Je kunt zien dat het nu veel gemakkelijker is om de functionaliteit van ons spel te begrijpen, omdat het
‫allemaal op één scherm past en mooi op een vergelijkbaar niveau van abstractie en begrip is gebracht.
‫En dit is wat we zelfdocumenterende code zouden noemen, omdat het code is die geen commentaar of documentatie nodig heeft om
‫uit te leggen wat het doet.
‫Het leest gewoon als Engels.
‫Goed spul.
‫Ik zie je in de volgende lezing.