‫Hé, welkom terug.
‫In deze video gaan we werken aan het weergeven van tekst op het scherm om ons te laten weten dat het spel begint.
‫En dit is de eerste stap om de afteltimer weer te geven om de speler te laten weten dat het spel
‫nog niet helemaal is begonnen, maar binnenkort zal beginnen.
‫Dit gaat om in blauwdruk implementeerbare gebeurtenissen.
‫Een Blueprint Implementable Event is een C++-functie die we vanuit C++ kunnen aanroepen, maar we implementeren de
‫functionaliteit in feite aan de blauwdrukkant.
‫Dus we kunnen onze C++-klasse hebben, zoals de spelmodus, en we kunnen een functie hebben die is gemarkeerd
‫als een blauwdruk, implementeerbare gebeurtenis, en dan kunnen we dat gedrag in blauwdrukken implementeren.
‫Dus wanneer we de C++-functie aanroepen die is gemarkeerd als een in een blauwdruk implementeerbare gebeurtenis, wordt de gebeurtenis in
‫de blauwdruk geactiveerd.
‫En elke blauwdruklogica die we met die gebeurtenis in de blauwdruk verbinden, wordt aangeroepen.
‫Dus ik ga hier een in blauwdruk implementeerbare gebeurtenisfunctie maken in tune tanks, spelmodi en blauwdruk
‫implementeerbare evenementen kunnen niet privé zijn.
‫Dus ik ga dit toevoegen aan de beveiligde sectie.
‫Nu ga ik hier een ongeldige functie van maken en ik ga dit startspel gewoon noemen.
‫Om dit een in een blauwdruk implementeerbare gebeurtenis te maken, moet ik het een U-functiemacro geven met
‫de U-functie.
‫Geef de implementeerbare gebeurtenis van de blauwdruk op.
‫Nu, als we deze in de blauwdruk implementeerbare gebeurtenis markeren, hoeven we het niet eens een functie-body hier
‫in C++ te geven.
‫Unreal Engine verwacht dat we de functionaliteit hiervoor in blauwdrukken implementeren, maar we kunnen het vanuit C++
‫noemen en dat is precies wat we hier in Handle Game Start gaan doen.
‫Dus net nadat we de variabelen van de tank en de spelercontroller hebben ingesteld, ga ik het spel starten en
‫nu kunnen we dit compileren.
‫En als ik hier in de editor terugspring, ga ik de spelmodus BP tune tanks openen en hier kunnen
‫we de functie implementeren.
‫Dus als we met de rechtermuisknop klikken en startspel typen, dan is hier het evenementstartspel dat is gemaakt zodra we
‫de functie hebben gedeclareerd en het de functiemacro hebben gegeven met een in de blauwdruk implementeerbare gebeurtenis.
‫Dus aan de C++-kant noemen we dit en in blauwdrukken reageert deze gebeurtenis erop.
‫We kunnen dit testen met een eenvoudige print string node en voor de string kunnen we Start game zeggen.
‫Als we nu op play drukken, zie ik het begin van het spel linksboven.
‫We weten dus dat onze in blauwdruk implementeerbare gebeurtenis werkt.
‫Wat we willen dat dit evenement doet, is een widget tonen die tekst bevat die de speler informeert dat het spel gaat beginnen,
‫wat betekent dat we een widget moeten maken om te laten zien.
‫Dus ik ga een nieuwe map maken in de map blauwdrukken en ik ga dit widgets noemen en ik ga
‫dubbelklikken op widgets.
‫En hier ga ik een nieuwe widgetblauwdruk maken.
‫Als ik nu met de rechtermuisknop klik en naar de gebruikersinterface ga, is hier Widget Blueprint.
‫Als ik nu hierop klik, maak ik een nieuwe widget-blauwdruk en noem ik deze
‫W BP voor Widget Blueprint, onderstreping start game-widget.
‫En als ik hierop dubbelklik, dan open ik de Widget Blueprint-editor en je zult zien dat deze
‫er heel anders uitziet dan de Blueprint-editor die we gewend zijn te zien.
‫En dat komt omdat dit voor een widget is.
‫Widgets zijn goed om dingen op het scherm weer te geven, zoals tekst.
‫Er is hier veel en we gaan alleen een heel eenvoudige widget maken die tekst laat zien.
‫Er zijn een aantal verschillende soorten elementen die we aan een widgetblauwdruk kunnen toevoegen,
‫zoals randen, knoppen, selectievakjes, afbeeldingen enzovoort.
‫Maar waar we in geïnteresseerd zijn, is deze hier die Tekst zegt.
‫Kijk nu hier beneden in het hiërarchiepaneel, je zult zien dat we de algemene WB-startgame-widget bovenaan
‫hebben.
‫En als we daarop klikken, kunnen we eigenschappen voor deze widget wijzigen.
‫Nu kunnen we widgetelementen naar deze hiërarchie slepen.
‫Dus ik ga in het palet zoeken naar canvaspaneel en sleep dat naar mijn hiërarchie.
‫Nu kunnen we met een canvaspaneel widgetelementen plaatsen en ze op een gewenste locatie op het scherm plaatsen,
‫zodat we een tekstelement rechtstreeks naar de grafiek kunnen slepen.
‫En je ziet in de hiërarchie dit nieuwe item onder canvaspaneel.
‫En er staat: Tekst.
‫Tekst blok.
‫Dit tekstblok tussen aanhalingstekens is de tekst die automatisch wordt ingesteld voor deze tekstwidget.
‫En hier in het detailvenster, met deze tekstwidget geselecteerd onder inhoud, zien we een teksteigenschap en
‫deze is ingesteld op tekstblok.
‫Maar we kunnen dit instellen op elke gewenste tekst, zoals maak je klaar.
‫Nu, nadat je dit hebt ingesteld om je voor te bereiden, zul je zien dat de tekst hier op het scherm zegt: Maak je klaar.
‫Dus de Widget Blueprint-editor stelt ons in staat om onze widgets-melding linksboven in het scherm aan te
‫passen, dit medaillon-ding hier, dit wordt een anker genoemd.
‫Onze tekstwidget wordt relatief ten opzichte van het anker op het scherm geplaatst.
‫Dus als de schermgrootte verandert, blijft de afstand tot dat anker constant.
‫En we kunnen het anker veranderen als we dat willen.
‫We kunnen bijvoorbeeld onze tekstwidget relatief ten opzichte van een anker in het midden van het scherm instellen
‫door naar het detailvenster te gaan en onder slot zien we ankers.
‫En als ik op de vervolgkeuzelijst klik, kan ik dit pictogram selecteren met een vierkant in het midden.
‫Als ik dat nu selecteer, bevindt het anker zich in het midden van het scherm en als ik
‫mijn widget volledig gecentreerd wil hebben, kan ik de positie X en Y hier onder de slotcategorie wijzigen, zodat ik dit op nul kan zetten
‫voor positie X en nul voor positie Y en scrollen met mijn muiswiel om in te zoomen, je zult zien dat het in de
‫linkerbovenhoek is zoals in het midden van het scherm.
‫Met dit uitlijningsveld hier kunnen we dit perfect centreren door waarden van 0 te kiezen. 54X en 0. 54 Y, en nu is
‫het volledig gecentreerd in het midden van het scherm.
‫Voor een startspel-widget is het waarschijnlijk gepast om deze tekst iets hoger te plaatsen.
‫Dus voor Positie Y kan ik dit naar links klikken en slepen, waardoor die Y-waarde negatief
‫wordt in de widget-blauwdrukeditor, de y-as wijst naar beneden.
‫Dus als we onze tekstwidget omhoog willen brengen, gaan we van die positie een lagere waarde maken.
‫Ik plaats het hier op ongeveer -300.
‫Nu beneden in de uiterlijkcategorie, kan ik een aantal eigenschappen voor deze tekst wijzigen.
‫Als ik op de vervolgkeuzelijst voor lettertype klik, kan ik de lettergrootte wijzigen in iets als 42.
‫Nu voor lettertype in plaats van vet.
‫Ik hou van het gewone lettertype.
‫Ik vind het er nu al wat beter uit zien.
‫Merk op dat onze tekstwidgettekst hier groter is dan de groene rechthoek, maar we kunnen de grootte van deze groene
‫rechthoek wijzigen.
‫En terwijl ik de rechthoek verander, zie je hier in het detailvenster dat maat X en maat
‫y veranderen.
‫Merk op dat positie X een beetje is verplaatst sinds ik het heb gewijzigd.
‫Ik kan het weer op nul zetten en aangezien de uitlijning voor de x 0 is. 5, het is perfect gecentreerd.
‫Dus nu heb ik een widget die zegt Maak je klaar.
‫Het enige dat u nog hoeft te doen, is dit aan de viewport toe te voegen, zodat we het op het scherm kunnen zien.
‫Je zult merken dat als ik op play druk en het spel begin te spelen, ik die widget niet op het scherm zie.
‫Dat komt omdat we dit actief aan het scherm moeten toevoegen, en daarom hebben we deze
‫in blauwdruk implementeerbare gebeurtenis in de spelmodus gemaakt, zodat we deze widget hier aan het scherm kunnen toevoegen.
‫Dus laten we praten over hoe dat te doen.
‫Nutsvoorzieningen.
‫De manier om een widget te maken van blauwdrukken is door het gebruik van een widget-knooppunt maken.
‫U kunt voor elke blauwdruk met de rechtermuisknop in de gebeurtenisgrafiek klikken en beginnen met het typen van de naam van een
‫knooppunt en vervolgens dat specifieke knooppunt selecteren.
‫Het knooppunt dat we nodig hebben, is een widget maken.
‫Nu zul je zien dat er Create Coolness Widget staat.
‫En dat komt omdat zodra ik het knooppunt Create Widget heb toegevoegd, ik de klasse Widget Blueprint hier in de
‫vervolgkeuzelijst van de klasse heb geselecteerd.
‫Dit is nodig zodat Unreal Engine weet welke widgetklasse moet worden gemaakt.
‫Nu, na het gebruik van een widget-knooppunt maken, gebruiken we een knooppunt voor toevoegen aan kijkvenster om deze widget daadwerkelijk aan het kijkvenster
‫toe te voegen en dan kunnen we het op het scherm in het spel zien.
‫Merk op dat de uitvoeringsdraden zijn verbonden en ook dat het knooppunt widget maken deze blauwe uitvoer retourneert en dat
‫dit moet worden verbonden met de doelinvoer in toevoegen aan kijkvenster, omdat toevoegen aan kijkvenster moet weten
‫welke widget moet worden toegevoegd aan het kijkvenster en het widget-knooppunt maken geeft de waarde van die widget terug.
‫Dus nu je weet hoe je een widget in blauwdrukken maakt, ga je naar de BP tune tanks
‫game mode class en gebruik je een create widget node.
‫Je gaat dit aansluiten vanuit onze blauwdruk implementeerbare event-uitvoeringsdraad de.
‫We hebben Start Game gebeld.
‫Nu moeten we in het Create Widget-knooppunt de widgetklasse selecteren om te maken, dus selecteer WB start game-widget, die nieuwe
‫widget-blauwdruk die we zojuist hebben gemaakt en gebruik vervolgens een add-to-viewport-knooppunt om deze nieuwe widget daadwerkelijk toe
‫te voegen aan de viewport en haak de uitvoeringsdraden omhoog.
‫En vergeet niet om de retourwaarde van widget maken aan de doelinvoer toe te voegen aan viewport.
‫Dus pauzeer de video en voeg deze knooppunten nu toe aan de spelmodusblauwdruk van de melodietank.
‫Dus ik ben hier in de melodie Tanks Game Mode Blueprint en ik ga met de rechtermuisknop klikken en maak
‫widget intypen en kies de Create Widget Node.
‫Merk nu op dat er Construct Geen staat.
‫En dat komt omdat het dat gaat zeggen totdat we de juiste widgetklasse selecteren in de vervolgkeuzelijst
‫voor klassen.
‫Maar voordat ik dat doe, sluit ik de executiedraad van het begin van het spel aan.
‫We krijgen deze functionaliteit dus daadwerkelijk uitgevoerd zodra onze in de blauwdruk implementeerbare gebeurtenisstartgame
‫wordt aangeroepen vanuit C++.
‫Voor de vervolgkeuzelijst voor de klas ga ik WP Start Game Widget selecteren en nu verandert de titel van de Node
‫om te zeggen Create WP Start Game Widget Widget.
‫Dus nu kunnen we zien dat dit een knooppunt voor het maken van een widget is.
‫Nu ga ik op de uitvoeringsdraad klikken en naar buiten slepen en typ vervolgens toevoegen aan kijkvenster.
‫En als ik vervolgens toevoegen aan kijkvenster selecteer, worden de uitvoeringsdraden automatisch voor mij
‫aangesloten, maar het verbindt de retourwaarde van widget maken niet met de doelinvoer voor toevoegen aan kijkvenster.
‫Die moet ik dus zelf aanklikken en slepen.
‫Dus wanneer Start Game wordt aangeroepen vanuit C++ en de gamemodusklasse, zullen we deze blauwdruklogica uitvoeren, wat zal
‫resulteren in het maken van een nieuwe widget op basis van de WP Start Game-widget en dan zullen we deze toevoegen
‫aan de viewport.
‫Dus ik ga op afspelen klikken en daar is de Get Ready-widget.
‫Nu hebben we gezegd dat dit een afteltimer gaat tonen, maar we hebben die functionaliteit nog
‫niet geïmplementeerd, dus dat komt binnenkort.
‫Dus samenvattend hebben we de Start Game Widget Blueprint gemaakt en voor nu staat er alleen tekst op met de tekst Maak
‫je klaar.
‫We hebben ook een widget-knooppunt maken en een knooppunt voor toevoegen aan kijkvenster gebruikt om deze widget aan het kijkvenster toe te voegen, zodat
‫we het kunnen zien zodra het spel begint.
‫En we hebben deze functionaliteit geïnitieerd met behulp van onze in de blauwdruk implementeerbare gebeurtenis die we hebben gemaakt in de
‫gamemodus C++-klasse genaamd Start Game in de komende video's. We gaan de tekst in deze widget tijdens runtime wijzigen, zodat deze laat
‫zien hoeveel tijd er nog over is op die timer voor het starten van de game, zodat de speler weet hoeveel tijd
‫hij moet wachten voordat hij daadwerkelijk met het spel kan beginnen.
‫Ik zie je snel.