﻿1
00:00:04,470 --> 00:00:05,770
‫Hé, welkom terug.

2
00:00:05,790 --> 00:00:12,240
‫In deze video gaan we werken aan het weergeven van tekst op het scherm om ons te laten weten dat het spel begint.

3
00:00:12,240 --> 00:00:18,240
‫En dit is de eerste stap om de afteltimer weer te geven om de speler te laten weten dat het spel

4
00:00:18,240 --> 00:00:21,140
‫nog niet helemaal is begonnen, maar binnenkort zal beginnen.

5
00:00:21,150 --> 00:00:24,900
‫Dit gaat om in blauwdruk implementeerbare gebeurtenissen.

6
00:00:24,930 --> 00:00:32,280
‫Een Blueprint Implementable Event is een C++-functie die we vanuit C++ kunnen aanroepen, maar we implementeren de

7
00:00:32,280 --> 00:00:35,070
‫functionaliteit in feite aan de blauwdrukkant.

8
00:00:35,070 --> 00:00:41,910
‫Dus we kunnen onze C++-klasse hebben, zoals de spelmodus, en we kunnen een functie hebben die is gemarkeerd

9
00:00:41,910 --> 00:00:47,310
‫als een blauwdruk, implementeerbare gebeurtenis, en dan kunnen we dat gedrag in blauwdrukken implementeren.

10
00:00:47,310 --> 00:00:54,570
‫Dus wanneer we de C++-functie aanroepen die is gemarkeerd als een in een blauwdruk implementeerbare gebeurtenis, wordt de gebeurtenis in

11
00:00:54,570 --> 00:00:55,920
‫de blauwdruk geactiveerd.

12
00:00:55,920 --> 00:01:01,890
‫En elke blauwdruklogica die we met die gebeurtenis in de blauwdruk verbinden, wordt aangeroepen.

13
00:01:02,160 --> 00:01:08,640
‫Dus ik ga hier een in blauwdruk implementeerbare gebeurtenisfunctie maken in tune tanks, spelmodi en blauwdruk

14
00:01:08,640 --> 00:01:11,310
‫implementeerbare evenementen kunnen niet privé zijn.

15
00:01:11,310 --> 00:01:14,220
‫Dus ik ga dit toevoegen aan de beveiligde sectie.

16
00:01:14,220 --> 00:01:19,080
‫Nu ga ik hier een ongeldige functie van maken en ik ga dit startspel gewoon noemen.

17
00:01:19,080 --> 00:01:25,380
‫Om dit een in een blauwdruk implementeerbare gebeurtenis te maken, moet ik het een U-functiemacro geven met

18
00:01:25,380 --> 00:01:26,160
‫de U-functie.

19
00:01:26,160 --> 00:01:30,570
‫Geef de implementeerbare gebeurtenis van de blauwdruk op.

20
00:01:30,690 --> 00:01:36,390
‫Nu, als we deze in de blauwdruk implementeerbare gebeurtenis markeren, hoeven we het niet eens een functie-body hier

21
00:01:36,390 --> 00:01:37,800
‫in C++ te geven.

22
00:01:37,800 --> 00:01:43,680
‫Unreal Engine verwacht dat we de functionaliteit hiervoor in blauwdrukken implementeren, maar we kunnen het vanuit C++

23
00:01:43,680 --> 00:01:49,110
‫noemen en dat is precies wat we hier in Handle Game Start gaan doen.

24
00:01:49,110 --> 00:01:55,260
‫Dus net nadat we de variabelen van de tank en de spelercontroller hebben ingesteld, ga ik het spel starten en

25
00:01:56,070 --> 00:01:57,840
‫nu kunnen we dit compileren.

26
00:01:57,840 --> 00:02:04,170
‫En als ik hier in de editor terugspring, ga ik de spelmodus BP tune tanks openen en hier kunnen

27
00:02:04,170 --> 00:02:05,700
‫we de functie implementeren.

28
00:02:05,700 --> 00:02:13,380
‫Dus als we met de rechtermuisknop klikken en startspel typen, dan is hier het evenementstartspel dat is gemaakt zodra we

29
00:02:13,380 --> 00:02:19,980
‫de functie hebben gedeclareerd en het de functiemacro hebben gegeven met een in de blauwdruk implementeerbare gebeurtenis.

30
00:02:19,980 --> 00:02:26,580
‫Dus aan de C++-kant noemen we dit en in blauwdrukken reageert deze gebeurtenis erop.

31
00:02:26,610 --> 00:02:33,390
‫We kunnen dit testen met een eenvoudige print string node en voor de string kunnen we Start game zeggen.

32
00:02:33,600 --> 00:02:37,650
‫Als we nu op play drukken, zie ik het begin van het spel linksboven.

33
00:02:37,650 --> 00:02:41,370
‫We weten dus dat onze in blauwdruk implementeerbare gebeurtenis werkt.

34
00:02:41,370 --> 00:02:49,530
‫Wat we willen dat dit evenement doet, is een widget tonen die tekst bevat die de speler informeert dat het spel gaat beginnen,

35
00:02:49,530 --> 00:02:53,880
‫wat betekent dat we een widget moeten maken om te laten zien.

36
00:02:53,880 --> 00:03:00,960
‫Dus ik ga een nieuwe map maken in de map blauwdrukken en ik ga dit widgets noemen en ik ga

37
00:03:00,960 --> 00:03:02,370
‫dubbelklikken op widgets.

38
00:03:02,370 --> 00:03:05,730
‫En hier ga ik een nieuwe widgetblauwdruk maken.

39
00:03:05,940 --> 00:03:11,010
‫Als ik nu met de rechtermuisknop klik en naar de gebruikersinterface ga, is hier Widget Blueprint.

40
00:03:11,040 --> 00:03:17,520
‫Als ik nu hierop klik, maak ik een nieuwe widget-blauwdruk en noem ik deze

41
00:03:17,520 --> 00:03:21,540
‫W BP voor Widget Blueprint, onderstreping start game-widget.

42
00:03:21,960 --> 00:03:27,240
‫En als ik hierop dubbelklik, dan open ik de Widget Blueprint-editor en je zult zien dat deze

43
00:03:27,240 --> 00:03:31,560
‫er heel anders uitziet dan de Blueprint-editor die we gewend zijn te zien.

44
00:03:31,560 --> 00:03:33,840
‫En dat komt omdat dit voor een widget is.

45
00:03:33,840 --> 00:03:37,860
‫Widgets zijn goed om dingen op het scherm weer te geven, zoals tekst.

46
00:03:37,890 --> 00:03:43,590
‫Er is hier veel en we gaan alleen een heel eenvoudige widget maken die tekst laat zien.

47
00:03:43,620 --> 00:03:50,310
‫Er zijn een aantal verschillende soorten elementen die we aan een widgetblauwdruk kunnen toevoegen,

48
00:03:50,310 --> 00:03:53,580
‫zoals randen, knoppen, selectievakjes, afbeeldingen enzovoort.

49
00:03:53,580 --> 00:03:58,140
‫Maar waar we in geïnteresseerd zijn, is deze hier die Tekst zegt.

50
00:03:58,140 --> 00:04:05,280
‫Kijk nu hier beneden in het hiërarchiepaneel, je zult zien dat we de algemene WB-startgame-widget bovenaan

51
00:04:05,280 --> 00:04:06,180
‫hebben.

52
00:04:06,180 --> 00:04:10,500
‫En als we daarop klikken, kunnen we eigenschappen voor deze widget wijzigen.

53
00:04:10,530 --> 00:04:14,040
‫Nu kunnen we widgetelementen naar deze hiërarchie slepen.

54
00:04:14,040 --> 00:04:20,070
‫Dus ik ga in het palet zoeken naar canvaspaneel en sleep dat naar mijn hiërarchie.

55
00:04:21,590 --> 00:04:28,880
‫Nu kunnen we met een canvaspaneel widgetelementen plaatsen en ze op een gewenste locatie op het scherm plaatsen,

56
00:04:28,880 --> 00:04:33,020
‫zodat we een tekstelement rechtstreeks naar de grafiek kunnen slepen.

57
00:04:33,020 --> 00:04:37,910
‫En je ziet in de hiërarchie dit nieuwe item onder canvaspaneel.

58
00:04:37,910 --> 00:04:39,360
‫En er staat: Tekst.

59
00:04:39,360 --> 00:04:40,310
‫Tekst blok.

60
00:04:40,310 --> 00:04:47,450
‫Dit tekstblok tussen aanhalingstekens is de tekst die automatisch wordt ingesteld voor deze tekstwidget.

61
00:04:47,450 --> 00:04:54,740
‫En hier in het detailvenster, met deze tekstwidget geselecteerd onder inhoud, zien we een teksteigenschap en

62
00:04:54,740 --> 00:04:57,170
‫deze is ingesteld op tekstblok.

63
00:04:57,170 --> 00:05:00,860
‫Maar we kunnen dit instellen op elke gewenste tekst, zoals maak je klaar.

64
00:05:01,250 --> 00:05:06,620
‫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.

65
00:05:06,710 --> 00:05:13,940
‫Dus de Widget Blueprint-editor stelt ons in staat om onze widgets-melding linksboven in het scherm aan te

66
00:05:13,940 --> 00:05:17,810
‫passen, dit medaillon-ding hier, dit wordt een anker genoemd.

67
00:05:17,840 --> 00:05:22,100
‫Onze tekstwidget wordt relatief ten opzichte van het anker op het scherm geplaatst.

68
00:05:22,100 --> 00:05:27,560
‫Dus als de schermgrootte verandert, blijft de afstand tot dat anker constant.

69
00:05:27,560 --> 00:05:29,990
‫En we kunnen het anker veranderen als we dat willen.

70
00:05:30,020 --> 00:05:35,690
‫We kunnen bijvoorbeeld onze tekstwidget relatief ten opzichte van een anker in het midden van het scherm instellen

71
00:05:35,690 --> 00:05:39,470
‫door naar het detailvenster te gaan en onder slot zien we ankers.

72
00:05:39,470 --> 00:05:45,500
‫En als ik op de vervolgkeuzelijst klik, kan ik dit pictogram selecteren met een vierkant in het midden.

73
00:05:45,500 --> 00:05:51,080
‫Als ik dat nu selecteer, bevindt het anker zich in het midden van het scherm en als ik

74
00:05:51,080 --> 00:05:58,430
‫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

75
00:05:58,430 --> 00:06:05,540
‫voor positie X en nul voor positie Y en scrollen met mijn muiswiel om in te zoomen, je zult zien dat het in de

76
00:06:05,540 --> 00:06:08,510
‫linkerbovenhoek is zoals in het midden van het scherm.

77
00:06:08,510 --> 00:06:17,180
‫Met dit uitlijningsveld hier kunnen we dit perfect centreren door waarden van 0 te kiezen. 54X en 0. 54 Y, en nu is

78
00:06:17,180 --> 00:06:21,350
‫het volledig gecentreerd in het midden van het scherm.

79
00:06:21,440 --> 00:06:28,250
‫Voor een startspel-widget is het waarschijnlijk gepast om deze tekst iets hoger te plaatsen.

80
00:06:28,250 --> 00:06:35,840
‫Dus voor Positie Y kan ik dit naar links klikken en slepen, waardoor die Y-waarde negatief

81
00:06:35,840 --> 00:06:40,250
‫wordt in de widget-blauwdrukeditor, de y-as wijst naar beneden.

82
00:06:40,250 --> 00:06:46,250
‫Dus als we onze tekstwidget omhoog willen brengen, gaan we van die positie een lagere waarde maken.

83
00:06:46,250 --> 00:06:49,130
‫Ik plaats het hier op ongeveer -300.

84
00:06:49,130 --> 00:06:55,460
‫Nu beneden in de uiterlijkcategorie, kan ik een aantal eigenschappen voor deze tekst wijzigen.

85
00:06:55,460 --> 00:07:01,730
‫Als ik op de vervolgkeuzelijst voor lettertype klik, kan ik de lettergrootte wijzigen in iets als 42.

86
00:07:01,730 --> 00:07:04,070
‫Nu voor lettertype in plaats van vet.

87
00:07:04,070 --> 00:07:06,140
‫Ik hou van het gewone lettertype.

88
00:07:06,140 --> 00:07:07,970
‫Ik vind het er nu al wat beter uit zien.

89
00:07:07,970 --> 00:07:14,300
‫Merk op dat onze tekstwidgettekst hier groter is dan de groene rechthoek, maar we kunnen de grootte van deze groene

90
00:07:14,300 --> 00:07:15,230
‫rechthoek wijzigen.

91
00:07:15,230 --> 00:07:22,010
‫En terwijl ik de rechthoek verander, zie je hier in het detailvenster dat maat X en maat

92
00:07:22,010 --> 00:07:22,880
‫y veranderen.

93
00:07:22,880 --> 00:07:26,270
‫Merk op dat positie X een beetje is verplaatst sinds ik het heb gewijzigd.

94
00:07:26,270 --> 00:07:32,180
‫Ik kan het weer op nul zetten en aangezien de uitlijning voor de x 0 is. 5, het is perfect gecentreerd.

95
00:07:32,180 --> 00:07:35,540
‫Dus nu heb ik een widget die zegt Maak je klaar.

96
00:07:35,570 --> 00:07:40,400
‫Het enige dat u nog hoeft te doen, is dit aan de viewport toe te voegen, zodat we het op het scherm kunnen zien.

97
00:07:40,400 --> 00:07:46,370
‫Je zult merken dat als ik op play druk en het spel begin te spelen, ik die widget niet op het scherm zie.

98
00:07:46,370 --> 00:07:51,530
‫Dat komt omdat we dit actief aan het scherm moeten toevoegen, en daarom hebben we deze

99
00:07:51,530 --> 00:07:56,960
‫in blauwdruk implementeerbare gebeurtenis in de spelmodus gemaakt, zodat we deze widget hier aan het scherm kunnen toevoegen.

100
00:07:56,960 --> 00:07:59,090
‫Dus laten we praten over hoe dat te doen.

101
00:07:59,420 --> 00:07:59,840
‫Nutsvoorzieningen.

102
00:07:59,840 --> 00:08:05,930
‫De manier om een widget te maken van blauwdrukken is door het gebruik van een widget-knooppunt maken.

103
00:08:05,960 --> 00:08:11,870
‫U kunt voor elke blauwdruk met de rechtermuisknop in de gebeurtenisgrafiek klikken en beginnen met het typen van de naam van een

104
00:08:11,870 --> 00:08:13,760
‫knooppunt en vervolgens dat specifieke knooppunt selecteren.

105
00:08:13,790 --> 00:08:16,040
‫Het knooppunt dat we nodig hebben, is een widget maken.

106
00:08:16,040 --> 00:08:20,990
‫Nu zul je zien dat er Create Coolness Widget staat.

107
00:08:20,990 --> 00:08:27,020
‫En dat komt omdat zodra ik het knooppunt Create Widget heb toegevoegd, ik de klasse Widget Blueprint hier in de

108
00:08:27,020 --> 00:08:29,150
‫vervolgkeuzelijst van de klasse heb geselecteerd.

109
00:08:29,150 --> 00:08:34,340
‫Dit is nodig zodat Unreal Engine weet welke widgetklasse moet worden gemaakt.

110
00:08:34,370 --> 00:08:40,880
‫Nu, na het gebruik van een widget-knooppunt maken, gebruiken we een knooppunt voor toevoegen aan kijkvenster om deze widget daadwerkelijk aan het kijkvenster

111
00:08:40,880 --> 00:08:45,290
‫toe te voegen en dan kunnen we het op het scherm in het spel zien.

112
00:08:45,320 --> 00:08:52,700
‫Merk op dat de uitvoeringsdraden zijn verbonden en ook dat het knooppunt widget maken deze blauwe uitvoer retourneert en dat

113
00:08:52,700 --> 00:08:59,300
‫dit moet worden verbonden met de doelinvoer in toevoegen aan kijkvenster, omdat toevoegen aan kijkvenster moet weten

114
00:08:59,300 --> 00:09:06,290
‫welke widget moet worden toegevoegd aan het kijkvenster en het widget-knooppunt maken geeft de waarde van die widget terug.

115
00:09:06,290 --> 00:09:11,570
‫Dus nu je weet hoe je een widget in blauwdrukken maakt, ga je naar de BP tune tanks

116
00:09:11,570 --> 00:09:14,960
‫game mode class en gebruik je een create widget node.

117
00:09:14,990 --> 00:09:20,390
‫Je gaat dit aansluiten vanuit onze blauwdruk implementeerbare event-uitvoeringsdraad de.

118
00:09:20,500 --> 00:09:21,910
‫We hebben Start Game gebeld.

119
00:09:21,910 --> 00:09:29,800
‫Nu moeten we in het Create Widget-knooppunt de widgetklasse selecteren om te maken, dus selecteer WB start game-widget, die nieuwe

120
00:09:29,800 --> 00:09:36,700
‫widget-blauwdruk die we zojuist hebben gemaakt en gebruik vervolgens een add-to-viewport-knooppunt om deze nieuwe widget daadwerkelijk toe

121
00:09:36,700 --> 00:09:40,960
‫te voegen aan de viewport en haak de uitvoeringsdraden omhoog.

122
00:09:40,960 --> 00:09:47,560
‫En vergeet niet om de retourwaarde van widget maken aan de doelinvoer toe te voegen aan viewport.

123
00:09:47,560 --> 00:09:52,900
‫Dus pauzeer de video en voeg deze knooppunten nu toe aan de spelmodusblauwdruk van de melodietank.

124
00:09:56,670 --> 00:10:03,090
‫Dus ik ben hier in de melodie Tanks Game Mode Blueprint en ik ga met de rechtermuisknop klikken en maak

125
00:10:03,090 --> 00:10:05,700
‫widget intypen en kies de Create Widget Node.

126
00:10:05,730 --> 00:10:07,830
‫Merk nu op dat er Construct Geen staat.

127
00:10:07,830 --> 00:10:12,930
‫En dat komt omdat het dat gaat zeggen totdat we de juiste widgetklasse selecteren in de vervolgkeuzelijst

128
00:10:12,930 --> 00:10:13,600
‫voor klassen.

129
00:10:13,620 --> 00:10:18,210
‫Maar voordat ik dat doe, sluit ik de executiedraad van het begin van het spel aan.

130
00:10:18,210 --> 00:10:24,720
‫We krijgen deze functionaliteit dus daadwerkelijk uitgevoerd zodra onze in de blauwdruk implementeerbare gebeurtenisstartgame

131
00:10:24,720 --> 00:10:26,700
‫wordt aangeroepen vanuit C++.

132
00:10:26,970 --> 00:10:34,830
‫Voor de vervolgkeuzelijst voor de klas ga ik WP Start Game Widget selecteren en nu verandert de titel van de Node

133
00:10:34,830 --> 00:10:38,700
‫om te zeggen Create WP Start Game Widget Widget.

134
00:10:38,820 --> 00:10:41,880
‫Dus nu kunnen we zien dat dit een knooppunt voor het maken van een widget is.

135
00:10:41,910 --> 00:10:48,660
‫Nu ga ik op de uitvoeringsdraad klikken en naar buiten slepen en typ vervolgens toevoegen aan kijkvenster.

136
00:10:48,660 --> 00:10:54,720
‫En als ik vervolgens toevoegen aan kijkvenster selecteer, worden de uitvoeringsdraden automatisch voor mij

137
00:10:54,720 --> 00:11:01,410
‫aangesloten, maar het verbindt de retourwaarde van widget maken niet met de doelinvoer voor toevoegen aan kijkvenster.

138
00:11:01,410 --> 00:11:04,070
‫Die moet ik dus zelf aanklikken en slepen.

139
00:11:04,080 --> 00:11:10,920
‫Dus wanneer Start Game wordt aangeroepen vanuit C++ en de gamemodusklasse, zullen we deze blauwdruklogica uitvoeren, wat zal

140
00:11:10,920 --> 00:11:18,330
‫resulteren in het maken van een nieuwe widget op basis van de WP Start Game-widget en dan zullen we deze toevoegen

141
00:11:18,330 --> 00:11:19,500
‫aan de viewport.

142
00:11:19,500 --> 00:11:23,220
‫Dus ik ga op afspelen klikken en daar is de Get Ready-widget.

143
00:11:23,400 --> 00:11:29,550
‫Nu hebben we gezegd dat dit een afteltimer gaat tonen, maar we hebben die functionaliteit nog

144
00:11:29,550 --> 00:11:32,220
‫niet geïmplementeerd, dus dat komt binnenkort.

145
00:11:32,490 --> 00:11:39,090
‫Dus samenvattend hebben we de Start Game Widget Blueprint gemaakt en voor nu staat er alleen tekst op met de tekst Maak

146
00:11:39,090 --> 00:11:39,930
‫je klaar.

147
00:11:40,260 --> 00:11:46,740
‫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

148
00:11:46,740 --> 00:11:48,990
‫we het kunnen zien zodra het spel begint.

149
00:11:48,990 --> 00:11:55,620
‫En we hebben deze functionaliteit geïnitieerd met behulp van onze in de blauwdruk implementeerbare gebeurtenis die we hebben gemaakt in de

150
00:11:55,620 --> 00:12:02,460
‫gamemodus C++-klasse genaamd Start Game in de komende video's. We gaan de tekst in deze widget tijdens runtime wijzigen, zodat deze laat

151
00:12:02,460 --> 00:12:09,270
‫zien hoeveel tijd er nog over is op die timer voor het starten van de game, zodat de speler weet hoeveel tijd

152
00:12:09,270 --> 00:12:13,140
‫hij moet wachten voordat hij daadwerkelijk met het spel kan beginnen.

153
00:12:13,860 --> 00:12:14,850
‫Ik zie je snel.

