Professional Documents
Culture Documents
Master The Art of Unreal Engine 4 Blueprints: Extra Credits - Saving & Loading + Unreal Motion Graphics!
Master The Art of Unreal Engine 4 Blueprints: Extra Credits - Saving & Loading + Unreal Motion Graphics!
Engine4Blueprints
Extra Credits - Saving & Loading +
Unreal Motion Graphics!
MastertheArtofUnrealEngine4BlueprintsExtraCredits(Saving&Loading+
UnrealMotionGraphics!)
Copyright2014KitatusStudios
Allrightsreserved.Nopartofthisbookmaybereproduced,storedinaretrievalsystemortransmittedinanyformorbyany
means,withoutthepriorwrittenpermissionofthepublisherand/orthebookscreatorRyanShah.However,piecesofthebook
maybereproducedincaseofbriefquotationsembeddedincriticalarticlesorreviews.
Everyefforthasbeenmadeinthepreparationofthisbooktoensuretheaccuracyoftheinformationpresented.However,the
informationcontainedinthisbookissoldwithoutwarranty,eitherexpressorimplied.Neithertheauthor,orpublisher,andtheir
dealersanddistributorswillbeheldliableforanydamagescauseddirectlyorindirectlybythisthisbook.
FirstPublished:28/09/2014
ProductionReference:014180SOLID14045
ISBN13:9781500313784
ISBN10:1500313785
www.kitatusstudios.co.uk
CoverimagebyRyanShah(contact@kitatusstudios.co.uk)
Credits
Author
RyanShah
SpecialThanks
ScarlettJuzzle
ThankYouScarlettforputtingupwithmeoverallthistimeandbelievinginevery
crazyideathatcomesintomyhead!IvehadsuchanamazingtimebeingwithyouandIcant
waitforeverystepofourfuture.Ihopeyoulookforwardtoevenmoreofmycrazyideas!
EpicGames
Thankyouforbeingawesome!
AbouttheAuthor
RyanShahisProjectLead/LeadDeveloperatKitatusStudios.Boastingover10yearsof
experiencecreatingvideogames,Ryanhasworkedonanassortmentofdifferentprogramsto
createvideogameexperiences.
BeforeKitatusStudios,Ryanwasafreelancewriter,whoselfpublishedworksoffiction.Using
hisexperienceasawriter,Ryanturnedtovideogames,alifelongpassiontobringtheworldsof
hisideastolife.
Hecanbefoundonlineathttp://kitatusstudios.co.ukandcanbecontactedat
contact@kitatusstudios.co.uk
Acknowledgement
AhugethankyouandahalfhastogotomybeautifulgirlfriendScarlett,whonomatterwhathas
alwaysbelievedinmewhennobodyelsedid.Herpatienceisinspiring.
IdlikeEpicforcreatingsuchadiverseyeteasytousesystemwithUnrealEngine4.When
peoplesayitsagamechanger,theywerentwrong!
Idalsoliketothankyou,thereader.Imightnotknowyoupersonally,butbyyoubuyingthisbook
Yourehelpingtosupportmeandhelpingtosupportthevideogameindustry.Whoknows
MaybethisbookwillhelpyouandbecomethesteppingstoneyouneedtomaketheBEST
GAMEOFALLTIME.Anythingispossible!
TableofContents
Chapter#1UnrealMotionGraphicsTitleScreen!
LetsBegin!Page11
CreatingaUMGBlueprintPage13
CreatingourTitleScreen!Page14
Buttons,Buttons,Buttons!Page19
MainMenuDIY!Page24
LinkToThePastPage26
LetsSeeOurMenus!Page29
ExtraButtons!Page31
TheseAreYourOptions!Page34
Chapter#2Saving&LoadingSavingourOptions!
HenshinAGoGoBaby!Page43
PlayerController=Conduit!Page46
SaveGame=False!Page48
SaveGame=True!Page49
OnButtonPress,SaveOurSettings!Page52
TheFinalShowdown!Page54
EndofTheBook!Page57
Preface
UnrealEngine4isthelatestversionofthepopularvideogamedevelopmentpackagetheUnreal
Engine.TheUnrealEngineneedsnointroductionBeingthepowerhousebehindtheprevious
consolegenerationfromthestart.TocalltheUnrealEngineapowerhousewouldbean
understatement,theUnrealEngineiseverythingadeveloper(IndieandCommercial)wouldever
needinavideogameenginetocreatetheiridealproject.Withitslatestiteration,UnrealEngine
4,EpichasimprovedUnrealEngineandpropelledtheengineintothenextgeneration,theyhave
broughtthefuturetothepresentwithUnrealEngine4andtheresliterallyneverbeenabetter
timetobeginusingUnrealEngine4foranyproject,bigorsmall,commercialorindependent.
MasteringtheArtofUnrealEngine4Blueprints(ExtraCredits)takesaconcise,clear,
informativebutfunapproachtodevelopingUnrealEngine4,withouttouchingasinglelineof
code.Byusingthisbook,youllbecreatingvarioussmallprojectscompletelyinblueprint.From
thisbook,youllbeequippedwiththeknowhowyoullneedtocreatethegameofyourdreams.
OntopofmasteringtheBlueprintssysteminUnrealEngine4,youllalsolearnthesecrets
behindgettingthemostoutofthebeastofanengine.
WhatYoullNeedForThisBook
InordertotakefulladvantageofthisbookYoullneedaWindows,MacorLinuxcomputerthatis
capableofrunningUnrealEngine4.Itrequiresacomputerwiththefollowingsystem
configuration,whichdoublesupattheMinimumRequirementsforthisbook:
DesktopPCorMac
Windows764bitorMacOSX10.9.2orlater
QuadcoreIntelorAMDprocessor,2.5GHzorfaster
NVIDIAGeForce470GTXorAMDRadeon6870HDseriescardorhigher
8GBRAM
Note:Believeitornot,YoullalsoneedUnrealEngine4(Version4.4ornewer).
WhothisBookisFor
MasteringtheArtofUnrealEngine4Blueprints(ExtraCredits)isdesignedforanyonewhose
dreamtofcreatingvideogames,butdidnthavetheknowhowto.Thisbookisalsodesignedfor
everyonewhowanttoharnessthepowerofUnrealEngine4totaketheircreationstothenext
levelandbeyondandthepeoplewhowanttocreategameswithoutwritingasinglelineofcode.
ThosewhoarefamiliarwithUnrealEngine4willhaveaneasiertime,buteverythinginthebook
isexplainedclearlyandwithreferencescreenshotstomaketheprocessofmasteringthe
blueprintssysteminUnrealEngine4abreeze.PeoplewithnopriorexperiencetousingUnreal
Engine4,orgameenginesingeneralshouldhavenoproblemwithfollowingthisbook,butifyou
needadditionalhelpwithanythinginthebook,feelfreetoaskontheUnrealEngineForums
(http://forums.unrealengine.com)oremailmedirectly:contact@kitatusstudios.co.uk.
ReaderFeedback
Ilovefeedback!Goodorbad,itsallwelcomeandIhighlyrecommendyoudoso!Ifyouloved
readingorhatedit,Iseriouslywouldlovetoknow.Feedbackisimportantinhelpinglettingme
knowhowIvedone,whatneedstobefixedandImjustgenerallyintriguedonhowwell/badIve
done.ImaperfectionistandIstriveforthebest,soiftheresanythingIcanimproveon,feelfree
toemail:contact@kitatusstudios.co.uk
CustomerSupport
Sinceyou'retheownerofthisbook,Youhavetheopportunitytogetbonuscontent,suchas
colourimagesandprojectcontent:Headtohttp://content.Kitatusstudios.co.uktoaccessto
thesefiles!
Piracy
ImnotgoingtopretenditdoesntexistPiracyispiracyandnothingisgoingtostopit.Ifyouve
piratedthisbookItsalright.Imnotgoingtocurseyouoranything.Itssadthatyourenotwilling
tospendmoneyonthisbook,butIknowtimesaretoughandinthedigitalworldIknowthat
everythingisfreetosomepeople.
DuetothefactIvegivenupthetimetowritethisbooktohelpteachotherstoharnessthepower
ofBlueprints,losingoutonworkhoursandtimeIcouldhavespentonSuperDistro(Myfirst
Commerciallytobereleasedproject),Iaskthatifyoupiratedthisbookandyouveenjoyedthis
book,PleaseconsiderpurchasingSuperDistrooryoucouldsendadonationthroughmy
website.Thismeansthatevenifyoudontspendthefullpriceonthisbook,Myeffortstobring
thesetutorialstoyouarent100%invein.
Ifyouvepurchasedthisbook,thenIcantthankyouenoughforsupportingmeandmyworkandI
seriouslyamgratefulyoureexperiencingthebookthroughlegitimatemeans.
Errata
Atthetimeofwriting,thebookhasnoerrors.However,astheengineisupdated,thingsmight
change.Intheunlikelyeventsomeofthecodenolongerworks,pleaseemailmeimmediately:
contact@kitatusstudios.co.ukBydoingthis,younotonlysecuretheintegrityofthebook,but
8
youalsohelpothersbynotcomingacrosserrorsandthisleadstoastressfreeexperiencewith
thisbook.Whoknows,youmightalsobecreditedinlaterbookrevisions!
DownloadingDLC(DownloadableContent)
Youcandownloadcolourvariationsoftheimagesinthisbook,aswellasUE4projectfilesfrom
http://content.kitatusstudios.co.uk.
Questions
Ifyouhaveanyquestions,emailmeatcontact@kitatusstudios.co.uk.Thelineisopen,soplease
don'tbeafraidtogetintouch.
Mission#1TitleScreen
CreatingaTitleScreenandOptionsMenu!
Template:
ThirdPersonBlueprint
WhatYoullLearn:
HowtouseUnrealMotionGraphics
HowtosetoptionsinUnrealEngine4
WhatYoullNeed:
BackgroundTexture(ForTitleScreen)[1280x720or1920x1080]
[Extras]WhatYoullNeed:
AnimatedMaterial(Atleast720pwouldworkperfectly)
10
LetsBegin!
HelloagainoneandallandwelcometothenextinstallmentofMastertheArtofUnrealEngine4
BlueprintsWherewewillbecoveringlotsoflittlegoodiestohelpboostyourUnrealEngine4
knowledge.
Todayweretacklingatitlescreen,usingthe(Atthetimeofwriting)stillexperimentaltool:
UnrealMotionGraphics.Thistoolis(Again,attimeofwriting)stillinitsinfancybutitspoweris
leakingoutofthesides(Notliterally,ofcourse!)YoucandosomanythingswithUnrealMotion
Graphics(SuchasHUD,Menusandsomuchmore!)Onceyouvereadthroughthis
minitutorial,youcouldevengobacktoBook#1andcompareUMGtotheclassicwayof
creatingaHUD!
ImsostokedtobeshowingyoutheropesofUMGsoIamjustgoingtodivestraightintothings!
AreyoureadytolearnevenmoreAwesomestuff?!HensinAGoGo!
Step#1CreateanewUnrealEngineproject(MakesureitsonatleastUnrealEngine4.4.1,
anythingearlierthenversiondoesnthaveUnrealMotionGraphics!)
[NOTE:Itreallydoesntmatterwhatprojectyouuseasatemplate,butIrecommendthe
ThirdPersonBlueprinttemplateasthatiswhatIllbeusingforthis!]
Nowyoushouldhavesomethingsimilartothisscreen:
Doesntthatfeellikehomenow?Itnevergetsoldseeingthisscreen!
11
Beforewecarryon,ifyourelivinginthepresenttime(Andnotinthedistantfuture!),youllneed
toactivateUnrealMotionGraphics(Asitscurrentlyanexperimentalfeature!).Todothat:
Step#2GotoEdit(InthetopleftofyourUnrealEnginewindow,nexttoFile)andselectEditor
Preferences.
Step#3IntheEditorPreferenceswindow,clickExperimentalwhichisundertheGeneral
header,whichwillopenuptheExperimentalsection.
Fromhere,youcanseeUnrealMotionGraphics(UMG)ontheright.Currentlyitsunticked.All
youhavetodoisclicktheemptyboxtoactivateit(Makesuretheboxisfilledintosignifyithas
beenactivated!)
Step#4OnceyouhaveactivatedUnrealMotionGraphics(UMG),makesuretoclicktheSet
asDefaultbuttononthetopoftheEditorPreferenceswindow,thenyoucanclosethewindow
andgobacktothemainenginescreen.
Beforewecontinue,therestwomorequickthingsweneedtodo:
Step#5Saveyourprojectasitis(Justtobesafe!)
12
Step#6CloseUnrealEngine4(YourProjectandtheLauncher),waitafewsecondsand
reopenUnrealEngine4(Andthenyourproject!)
NOTE:RemembertoopenyourprojectinEngineversion4!
EXTRANOTE:Dontplaythisonecool.Iknowwhenyouinstallprograms,someofyou
hittheRestartlaterbuttonandcontinuetousetheprogramlikearebel,butdontdo
thatherebecausethatdoesntwork.YouHAVEtorestarttheeditororUnrealMotion
Graphicswontworkproperly!
Step#7Nowthatyouverestartedyourproject,weneedtocreateanewemptylevel.Callthis
newlevelUMG_MainMenuandmakesureyouselectEmptyLevel.
Savethelevelasitcurrentlyisandthenwecanbeginthefunstuff!
CreatingaUMGBlueprint!
Step#1WithintheContentBrowser,(MakingsureyouvegottheGAMEfolderhighlighted)
createanewfolder(ByclickingNew>Folder).NamethisfolderUMG.
Step#2Oncethefolderhasbeencreated,doubleclickUMGtoopenupthefolder.
Nowwe'regoingtohavesomefun!
13
Step#3WhilestillintheContentBrowser(InourUMGfolder),RightClick(Ctrl+Click)inthe
emptyspaceinthefolder(WhichbringsuptheCreatewindow).Inthiswindow,Scrolldownto
UserInterfaceandhighlightUserInterfacewithyourmouse,whenthepopupmenuopens,
selectWidgetBlueprint(NamethisBlueprintUMG_MiniTitle)
Step#4DoubleClickthenewlycreatedUMG_MiniTitletoopenupUnrealMotionGraphics
NowthenfunREALLYbegins!
CreatingourTitleScreen!
Firstthingsfirst,weregreetedwithaCanvasPanelalreadyplaceddownforus(Youcansee
thisinthebottomleftunderHierarchy.WedontneedaCanvasPanelforwhatweregoingto
do,so
Step#1ClickontheCanvasPanelentryinthehierarchyandpressdeleteonyourKeyboard
todoawaywiththeuselessCanvasPanel.
NowwevegotridoftheCanvasPanel,wecanputinaborder,whichwillcoverourgamescreen
edgetoedgewhichwillbeperfectforourMainMenubackground!
14
Tocreateaborder,wehavetofirstfindwhereitishiddeninUMG(Whichisactuallynotthat
hidden,ImeanifitwereSolidSnake,itwouldbedeadinseconds!)
Step#2InthePalette(InthetopleftoftheUMGwindow),thereareanumberofoptionsjust
waitingtobeclickedon.
IfyouclickonCommon,awholenewrangeofoptionsarenowatourdisposal.Toputthe
borderintoourproject,allwehavetodoisclickBorderanddragitintotheBlueprintlooking
UMGview.YoullknowifyouvedoneitrightasitllnowshowupintheHierarchy!
Tosomethiswouldntseemlikedoingmuch,butifyoucomparethistotheHUDwecreatedlast
timeround,wetechnicallycreatedaHUDblueprint,settheresolutionofthescreenthattheuser
isusingandgotitprimedtocreateourHUDInliterallyseconds!
Step#3NowourBorderisready,wecanfillitwithanimage.Todothis,weneedtocreatea
SlateBrush.Itsoundscomplicatedbutittakesagoodcoupleofseconds.
CloseoutofUMGforasecondandgobacktotheContentBrowser,intoyourUMGfolder.This
isthetimetoimportyourimageforthebackgroundifyouhaventalready(1280x720imageor
1920x1080isideal!)
15
Step#4Onceyourimagehasbeenimported,wecannowcreateourbrush.Justlikeyou
createdtheWidgetBlueprint,dothesamethingbutchooseSlateWidget(Ifyouveforgotten,
RightClick[Ctrl+Click]>UserInterface>SlateWidget)andnamethisUI_Title.
Yourfoldershouldnowlooksomethinglikethis:
NOTE:IvealreadycreatedaMaterialformytexturebutitsdowntoyouwhetherornot
youwanttodothat.
EXTRANOTE:Nowisagoodtimetosave!
Step#5DoubleclickUI_Titletoopenuptheproperties,andsetyourTextureorMaterial
Assettoyourimagethatyouhaveimported!
Beforeyoumoveon,makesureyousettheimagesizecorrectlyorthiswillcauseissues!
16
NOTE:IfyoureimportingaMaterial,itmightsaythatThisMaterialisnotsupportedin
UI.Ifthisisthecase,simplydoubleclickyourmaterialfromwithinthecontentbrowser
andintheproperties(OntheleftintheMaterialEditor),scrolldowntillyouseeUsed
withUIandsetthattotrue,compile,saveandthenallyourproblemsthatUMGis
churningoutshoulddisappear!
Onceyourehappywitheverything,saveandclosethiswindowandheadbackinto
UMG_MiniTitle
Step#6OncebackinUMG,GointotheHierarchyandclickBorder.Thiswillbringupthe
propertiesontherighthandside.
17
JustunderAppearance,whereitsaysBrushandhasabigemptywhitebox,Simplyclick
NoneandswapitwithyourSlateBrush.
Done!Nowourbackgroundimageisshowing,letsgetmakingourtitlescreen!
18
Buttons,Buttons,Buttons!
Nowwehaveabackgroundimage,weneedtoputabuttonintoourTitleScreensotheusercan
navigatearound,playthegame,changetheirsettingsorexityourproject.
Tocreatebuttons,weneedtocreateaboxthatcansitonourTitleScreen.Todothis
Step#1HeadbacktothePaletteonthetopleftandthistimeinsteadofusingtoolsfromthe
Commonsection,clickPaneltobringuptoolsthatwillbeextremelyhelpfultoourcause!
ThisiswhereweneedtobringtheCanvasPanelback,so
Step#2SimplyclickCanvasPanelanddragitintotheviewportofUMG.Done.
19
Justtobesafe,checktheHierarchyquicklytomakesuretheCanvasPanelisnowsittingunder
theBorderlikeso:
NowwecanstartaddingbuttonsandwhatnottoourWidget!
Step#3IntheHierarchy,clickCanvasPaneltomakesurewhatweaddnextgoesintothe
CanvasPanelandnotontheBorder.
OnceyouvehighlightedtheCanvasPanelintheHierachy,gobacktothePaletteboxandthis
timeclickHorizontalBoxanddragintoourUMGviewport.
20
Step#4Zoomin(ByusingyourmousesScrollWheel)totheHorizontalBoxandclickthe
newlycreatedHorizontalBoxandresizetheboxtocoverwherealongbuttonwouldsit.Once
youveresizedthebox,movetheboxnearthebottomofthescreenlikesobyclickingand
draggingthebox:
WevenowcreatedtheHouseforthebutton,sowhatsnext?Justbeforeweputourbuttonin
hishousetosleep,weneedtotellUMGoneimportantthing
WeneedtotellUMGthatnomatterwhatthescreensize,ourbuttonneedstostayinthis
positionatthebottomofthescreen.Andthisishowwedojustthat!
Step#5WiththeHorizontalBoxstillselected,gotoitsoptionsontherightofthescreenand
atthetopunderLayoutisasectioncalledAnchors,itlookslikethis:
Step#6UnderAnchorsthereisagreyboxwiththewordAnchorswritteninsidewithadown
arrow,clickthisdownarrowandselectthe10thoption(Smallboxinthebottomcentre).
21
Thisstopsthebuttondisappearingnomatterwhatthesizeofthescreen!
SowehavetheHouseallsetup,itstimetoputthebuttoninitshome!
Step#7HeadbacktothePaletteboxintheleftandgototheCommonsection.Withinthis
commonsection,clickButtonanddragitINTOyourHorizontalBoxwhichyousetuppreviously.
Theresstillsomeworklefttobedonebeforethisisafullyfunctioningbutton!
Thebuttonislookingalittlebareatthemoment,soletsgetsometextinsidesoplayersfindout
whatourbuttonshoulddo!
Step#8JustlikeyoudidwiththeButton,findTextBlockinthePalette(Whichisunder
CommonjustliketheButtonwas).DragthisINTOthebuttonandyoullseejustlikemagicthe
textbecomespartofourbutton.
22
Step#9Withthetextselected,justlikebeforeheadovertotheDetailspanelontheright.
Thistime,weneedtoeditthetextSojustunderContent,theresasectioncalledText.So
canyouguesswhatwehavetodowiththis?Yougotit!
Inthetextbox,write:ClicktoStart.
IbetyoureitchingtoknowwhattheBindbuttonisforButDONOTCLICKITJustyet.Well
comebacktothissoon!
Theresjustonelittlethingandweredonewiththisbuttonforthetimebeing:
Step#10ClicktheButton(Notthetext)andgointotheDetailsontheright.Scrolldownuntil
youfindtheLayoutsection.Inthissection,theresapartcalledPaddingandjustunderthatis
apartcalledSizewithtwooptions:AutoandFill.
23
ClickAutotomakeitfillourHorizontalBox.
WevedonewhatneededtobedonenowforthisbuttonButitsnotquitefunctionaljustyet.
Beforewecontinuehowever,weneedtocreateanotherWidgetBlueprint,sofornow:
Step#11Compile/SaveandclosethisUMGwindowandinourUMGfolderRightClick(Ctrl
+Click)ourUMG_MiniTitleandselectCreateCopy.
Namethiscopy:UMG_Title2.
MainMenuDIY!
NowitstimetotestyourskillssoIcanshowtoyoujusthowmuchyouvelearntwithoutrealising
it!
YourUMGfoldershouldnowlooklikethis:
24
Ifitdoes,Awesome!WecancontinueIfnot,however,thensimplydoublebackandskimover
thelastchaptertocheckifyouvemissedsomething.
Readytocontinue?Excellent!
Step#1DoubleClickUMG_Title2toopenupourduplicatedMenu.
Step#2ExpandalloftheobjectsintheHierarchyanddeletetheHorizontalBox,Buttonand
Text(DeletingtheHorizontalBoxshoulddeleteitallforyou!)
Step#3Nowusewhatyouvelearntsofartocreatethis:
RemembertoanchoreverythingtotheCENTREofthescreenthistime(Notthebottom)and
makesureeachofthebuttonsareintheirownHorizontalBoxbutthey'reallaChildofthe
CanvasPanel.
Ifyouneedhelp,refreshyourselfbygoingthroughthepastchapter,butIbelieveinyouandI
knowyoucandoitwithnoproblemswhatsoever!
25
LinktothePast
SowehaveaTitleScreenandaMainMenu,butnothinghookingthembothtogether.Ibetyoure
raringtoknowjusthowtolinkthemtogetherSowhatwearewaitingfor?Letsdoit!
Step#1Save/CompileyourUMG_Title2.Oncesaved,closeUMG_Title2andopen
UMG_MiniTitle.
Step#2ClickonourClicktoStartbutton(Besuretonotclickthetext!)andheadovertothe
detailspanelontheright:
WhereitsaysEvents,theresasectioncalledOnClickedEventwithaBindbutton.This
meanswecantellUMGwhatwillhappenwhenthisbuttonhasbeenpressed,soclickBindand
selectCreateBinding.ThiswillcreateaBlueprintforus,readyforustomessaroundwith.
26
Firstthingsfirst,weneedtobreakthisconnectionasatthemomenttheBlueprintreads:Start
thestuffinthisline>Endthestuffinthisline.This,obviouslyisntwhatwewant.
Step#3Alt+ClickthearrowontheGetonClickedEvent0tobreaktheconnection.Nowclick
theGetonClickEventnodeandmoveitabitfurthertoleftsowehavesomeroomtoplaywith.
Step#4FromtheemptypinontherightofGetonClickedEvent,clickanddragtotheright
andourfavouriteCompactBlueprintLibrarywillopenup.
27
TypeinRemoveandselectRemovefromViewport,thiswilltakeourcurrenttitleandgetrid
ofit.
NowthatwevegottenridofthecurrentTitleScreen,weneedtocreatetheotherTitleScreenwe
created(UMG_Title2)soitactsasaseamlesstransitionfromTitletoMainMenu.
Step#5FromtheemptypinontherightoftheRemovefromViewportnode,clickanddragto
theright.WhentheCBLopensup,typeinCreateWidgetandselecttheCreateWidgetnodeto
createit.
Step#6WithintheCreateWidgetnode,thereisasectioncalledWidgetType,withabox
calledSelectClass.ClickSelectClassandclickUMG_Title2_C.
Thiscreatesthesecondtitlescreen,butitdoesntactuallyshowourTitlescreen,itonlycreates
it.Itsoundsabitcomplicated,butallshouldmakesenseinamoment.
Step#7FromtheReturnValuepinofCreateWidget,Clickthebluepinanddragtothe
right.IntheBlueprintLibrary,typeAddandselectAddtoViewport.
Thiswillbringthesecondtitlescreenup,buttheresanumberofboolsweneedtotickinthis
nodebeforewecanuseitasaTitleScreen:
28
Modal&ShowCursorSetthesetotrue
ModalmeanstheTitleScreeneatsupalloftheinputs,soyoudontaccidentlyclickbehindthe
titlescreen.
ShowCursorshowsthecursor.
DontsetAbsolutetotrueaswhenAbsoluteisfalsemeansthatitshouldtakeupthewhole
screenandnotonlypartofit.
Step#8NowconnecttheemptyrighthandsidepinofAddtoViewporttotheReturnNode
thatwasoriginallyinthisBlueprintandpow!ThatsthisBlueprintdone!SaveandCompilethe
BlueprintthencloseUMGItstimetotellourprojecttoactuallydisplaythesemenuscreens!
LetsSeeOurMenus!
Headintoyouremptylevelandlikewevedoneafewtimesinthepreviousbook,headintothe
levelblueprint.Ifyouveforgottenhowtodothis:
#1ClicktheBlueprintsbuttonabovetheviewport
#2PressOpenLevelBlueprint
NowtheLevelBlueprintisopenWeneedtotelltheLevelthatwhenthelevelbegins,drawour
menu!
29
Aswehavethefirstmenuthatdrawsthesecondmenuonthebuttonpress,allwehavetotell
thelevelblueprintistodrawthefirstmenu.Sowhatarewewaitingfor?!
Step#1RightClick(Ctrl+Click)inemptyspaceintheBlueprintarea.WhentheCompact
BlueprintLibraryopensup,typeinBeginandselectEventBeginPlay.
Justlikebeforeinthepreviouschapter,createaCreateWidgetnodeconnectedtoEvent
BeginPlayandthencreateanAddtoViewportnodeconnectedtotheCreateWidgetnode
bydraggingfromtheReturnValuepin.
OnceyouvecreatedtheAddtoViewportnode,besuretoenabletheModalandShow
Cursorboolsagainbytickingthem!
Theonlythingyoushouldbedoingdifferentfrombefore(Apartfromobviouslymissingoutthe
RemovefromViewportnode!)issettingtheWidgetTypeintheCreateWidgetNodeto
UMG_MiniTitle_C.
NOTE:IfyourUMGfilesarentshowingupinWidgetTypethismeansthatoneofyour
WidgetshavehadissuescompilingUsuallybecauseyouforgottoconnecttheReturn
Nodeinthebuttonstogether!
Onceyourlevelblueprinthasbeenupdatedwith:EventBeginPlay>CreateWidget>Addto
Viewportasexplainedabove,CompiletheBlueprint,closetheBlueprinteditorandtestyour
currentprojectbypressing:Alt+Ponyourkeyboard.
30
Congratulations!Itworks!
WestillneedtocodetheNewGame,OptionsandQuitGamebuttons(Letsnotgetahead
ofourselvesjustyet!Theresstilloneortwoobstaclesinourwaybutwellgetthereinnotime!)
ButthiscausesforacelebrationYouvejustcreatedafullyworkingTitleScreenSoletsgetthe
otherbuttonsworking!
ExtraButtons!
OnceyouvetestedyourmenuandyourecompletelyhappywitheverythingItstimetoprogram
thebuttonsinourUMG_Title2UMGWidget!
Step#1IntheContentBrowser,OpenupUMG_Title2.
Step#2JustlikeinthechapterbeforethechapterjustgoneCreateaBindforallthree
buttons(NewGame,OptionsandQuitGame)butdontfillouttheBlueprintsyet.
31
OnceyouvecreatedBindsforallthreebuttons,gointotheGraphtab(Onthetopright)and
makesureyourFunctions(IntheVariableLibraryontheleft)looklikethis:
IfyourFunctionsdoesntlooklikethat,thenyouhaventcreatedBindsforallthreebuttonsGo
backuntilyouendupwithGetOnClickEvent_0,GetOnClickEvent_1andGetOnClickEvent_2
intheFunctionsareaofyourUMGBlueprint.
Readytocontinue?Awesome!
OpenuptheBlueprintforGetOnClickEvent_0(WhichshouldbeboundtotheNewGame
button).
AllwehavetodoforthisishookupaOpenLevelnode!
32
WithintheOpenLevelnode,thereisaninputcalledLevelName.Fordemonstration
purposes,letsputinExample_Map,whichwillopentheExampleMapwithinourproject!
Whatdidwejustdo?BasicallytheBlueprintreads:WhentheButtonisclicked,open
Example_Map!Simple...yeteffective!
CompileandmoveovertotheBlueprintGetOnClickedEvent2[Whichshouldbeboundtoyour
QuitGamebutton].
ImnottalkingabouttheOptionsButton(WhichisGetOnClickedEvent1.Donot
openGetOnClickedEvent1,openGetOnClickedEvent2).
WhenyoureinyourQuitGameBlueprint(GetOnClickedEvent2),weneedtoaddaExecute
ConsoleCommandnode,whichisanodewhich(Youguessedit!)executesaconsole
command!
Bynow,Imsureyoucanguesshowtocreatethenode,butifnot,heresahint:RightClick(Ctrl
+Click).WhentheCompactBlueprintLibraryopensup,typeinExecuteConsoleandselect
thecorrectnode!
Now,ImsureyourewonderingwhatCommandneedstogointotheinputwithinExecute
ConsoleCommand,soletsnotwasteanytime!
33
WithintheCommandinput,simplytypeQuit.Yup,thatsallyouhavetodoforthisBlueprint!
Sojustlikethat,wevesetupNewGameandtheQuitGame,werealmostalldonewiththis
project!Allwehavetodonowiscoupleupeverythingwevelearntsofaraswellasafewmore
pointerstocreatetheOptionsmenu!
TheseAreYourOptions!
CreateanewWidgetBlueprintandcallitUMG_Options.Withinthismenu,useeverything
youvelearnedthusfartocreatethreebuttons(Allwithtextin!),sometextabovethesebuttons
andtwomorebuttonsunderneaththeotherbuttonsandtext.Youshouldgetsomethingthat
lookslikethis:
Ifyoucantseetheimage,hereswhatyouneedintherelativeboxesandwhatnot:
34
Toptextbox:SetGraphicsSettings
ThreebuttonsundertheTextBox:Low,Med,High
ThetwobuttonsundertheLow,Med,HighApplyandCancel
Gotit?Awesome!Ifnot,Skimbackthroughwhatwevealreadycoveredinthebooktotouchup
onwhateveryouremissing.
Onceyourereadytocontinue,weneedtoheadoverintotheEventGraphofourUMG_Options
(Remembertousethetopribbontonavigate!).
Justlikewelearntinthelastbook,weneedtocreateanInteger.Rememberthat?Ifnot,heresa
realquickreminderofwhatanIntegerisandhowtocreateone:
WhatisanInteger?AnIntegerisanumberthatwecansetandcallbacktolater.Whyisthis
important?BecausewecanchangethingsifourIntegerisaspecificnumber!
ButRyan,WhycantIuseaFloat?Isntthatanumberwecansettoo?Well,Mysticalreader
whocanwriteandbeansweredalaHarryPottertoTomRiddleAFloatcandealwithdecimal
places,whichisgreatforstoringtimeoranythingthatneedsanumber.numberfigure,butan
Integerdoesntdealwithdecimals,Itjustdoesntunderstandthem.
Instead,itpridesitselfonactingasaswitchoracollectionforWHOLEnumbersonly(Sorry
decimalnumbers,itstotheFloatforyou!)
Soundscool!Butwhydoweneedthatrightnow?Well,Mr/Miss/Ms/Dr,wecanusean
IntegertoswitchbetweenLow,MedandHighwithalmostnoeffortatall!Wecanthensavethat
IntegerandcallitbackWHENEVERweneeditagain!
Groovitational!LetsMakeOne!Surething!Letsgetrighttoit!
[NOTE:Yes,itwas5amwhenIwrotethat,Dontmindme!]
Step#1Ifyourenottherealready,headintotheGraphtabofyourUMG_Options.(Usethe
toprightTabtonavigatetoit!)
Step#2Onthefarleft,theresawindowthatIliketocalltheVariableLibrary,itlooksalittle
likethis:
35
Step#3ClicktheVariablebutton(WhichisnexttoFunction,Macro.etc),tocreateanew
Variable.
Step#4Withinthedetailspanel(JustbelowtheVariableLibrary!),changetheVariableType
toIntandsetthenametoGraphicsSettings.
Step#5Done?Awesome!Thatsallweneedtodohereforthemoment,sousethetopright
ribbonagainandgobackintotheDesignertabtogobacktoourUMG!
Step#6ClicktheLowbuttonwhichyoucreatedearlier(Notthetext,thebutton!)andinthe
righthandsidedetailspanel,createanewBindforit(Justlikewedidbefore!)
36
Step#7ThiswillopenaBlueprinteditorforwhathappenswhenthisbuttonispressed.Onthe
leftinyourVariableLibrary,grabyourGraphicsSettings(Youmightneedtoscrolldowninthe
VariableLibrarytofindit!)anddragitintotheBlueprintarea.Whenasked,selectSet.
Step#8AsthisbuttonwillbetheLowsetting,keeptheGraphicsSettingat0andconnect
bothleftandrightwhiteinputstotheGetOnClickedEventandReturnNoderespectively.
Step#9DoexactlywhatwejustdidforboththeMedandHighbuttons,howeverremember
tosetGraphicsSettingsto1intheMidBlueprintand2intheHighBlueprint.Confused?Heres
whatyoushouldendupwith:
Step#10Threebuttonsdown,twotogo!WelldealwithApplyintwomoments,butfirstlets
takeonthatCancelbutton.CreateabindingforitandjustlikewhatwedidfromtheTitle
ScreentoOptions,createaRemoveforViewportnodefollowedbyCreateWidget
(RemembertoselectUMG_Title2inWidgetType!)followedbyAddtoViewport:
37
Step#11WevenowonlygotoneButtonlefttofillinApply!.Sowhatarewewaitingfor?
CreateabindforApplyandletsgettocoding!
Step#12RightClick(Ctrl+Click)toopentheCompactBlueprintLibraryandtypeinSwitch
onInt.
Step#13ClicktheSwitchOnItNodewhichwejustcreatedandintheDetailspanel
underneaththeVariableLibrary,setDefaultPintofalsebyuncheckingthebox.Oncedone,
withintheSwitchonIntnode,addtwomorePins.
Step#14DoesntthatlightgreenbuttonnexttoSelectionseemfamiliar?Youveguessedit!
GrabyourGraphicsSettingsfromtheVariableLibrary,dragitintotheBlueprintandselect
Getwhenasked.HookitintoSelectionandconnecttheleftinputpinoftheSwitchonIntinto
theGetOnClickedEvent
38
NoticethatwevecreatedthreeSwitchOnIntoutputs:0,1and2.Justlikewedidwith
GraphicsSettingsInteger.Socanyouguesswhatthismeans?Yougotit!0Standsforour
Lowoption,MedforourMediumandHighforourHighoption.Buthowdowechangethe
graphicsquality?Simple!
Step#15RightClick(Ctrl+Click)toopenuptheCompactBlueprintLibraryandtypein
ExecuteConsoleandselectExecuteConsoleCommand.Dothisthreetimes.
39
Step#16HookeachoneofthesenodesintotheoutputsofSwitchonInt,likeso:
NowweneedtofigureoutwhatCommandtouseAquickcheckoftheEngineScalabilitypage
ontheUnrealEnginesitegivesusanumberofoptionstoplaywith.Forthistutorialssake,well
justbeusingsg.PostProcessQuality.
Forlow,wellusesg.PostProcessQuality0,Mediumwelluse:sg.PostProcessQuality1and
forHigh:sg.PostProcessQuality3.
Step#17SointheCommandareaofourExecuteConsoleCommand,intheonethat
stemsfromSwitchonInt0putsg.PostProcessQuality0.Intheonestemmingfrom1,put
sg.PostProcessQuality1andsg.PostProcessQuality3respectively.
Sowhatnow?Ibetyourethinkingwevegottodosomesupercomplicatedstuff?Nope!Simply
dowhatwevedoneafewtimesnowCreateaRemoveforViewportnodefollowedbyCreate
Widget(RemembertoselectUMG_Title2inWidgetType!)followedbyAddtoViewport.
40
ConnectallthreeConsoleCommandoutputstotheinputofRemovefromViewportand
connecttheoutputofAddtoViewporttothemainoutputofourBlueprintlikesoandwere
done!
Nowitsfinished!WecantapourselvesontheshouldernowWevecreatedaworkingmenu
system!ButwaitWhatgoodisthismenusystemifitdoesntsaveourpreferences?
Ohhohoho,Itseemsimpossiblebutitsfarmoresimplerthenyouthink.Butwellsavethatfor
thenextMiniMission!Sowhatareyouwaitingfor?!Youmadeanawesomemenu,nowlets
makeit110%moreawesome!
41
Mission#2Saving&Loading
AutoSaving&LoadingourSettings!
Template:
ThirdPersonBlueprint
WhatYoullLearn:
Saving&Loading
WhatYoullNeed:
TheOptionsMenuYouCreatedInTheLastChapterorUseTheArtOfBP_Mini#1
Projectavailableathttp://content.kitatusstudios.co.uk
42
HenshinAGoGoBaby!
Letsnotdillydally,letsgetrightbackintothings!
Step#1Ifyourenottherealready,openuptheMenuprojectwecreatedinthelastchapterOr
ifyoudonthavethattohand,downloadandopentheArtOfBP_Mini1projectfilesavailableat:
http://content.kitatusstudios.co.uk
WeneedtocreateaSaveGameblueprinttostoreourSettingsinwhichwevecreated,sohead
intotheUMGfolderwithintheContentBrowserandgotoNew>Blueprint.
WhenitaskswhattypeofBlueprintyoudliketocreate,clicktheCustomClassesbuttonnear
thebottomoftheWindowandinthesearchfield,typeSaveandselectSaveGame:
Step#2ClickSelectandnamethisBlueprint:Save_SaveGraphics.Oncecreated,double
clickthenewlycreatedBlueprinttoopenitup.Theresnotaterribleamountwehavetodoin
hereButitscrucialyoudontgetitwrongornoneoftheawesomewereabouttoachievewill
actuallywork!
43
Step#3OnceyourBlueprinthasloadedup,headovertotheVariableLibrary(IntheGraph
tab!)andcreateanewInt(Yourememberhowto,right?Ifnot,goandskimthelastchapter
again!)andcallitS_Graphics.
Save&CompilethisBlueprintthenyoucancloseit!
ThatsallwehavetodofortheSaveblueprint!
What?!Buthowdoesthatwork?!Ihearyourmindscreamthroughthesepages.
Well,itsalittlemorecomplicatedthenwhatyoureassuming.ThisSaveBlueprintdoesnt
actuallysaveorevenloadinformation.TheBlueprintstoresinformationthatcanbecalledat
anytime.Thinkofitasapocket.
Apocketdoesnthavehands,soitcantgiveyouthechocolatebaryouveputinthereanditcant
addmorechocolatebarstoitself(Imaginethat)butwhatitdoesisstorethatChocolateuntil
youneeditnext.
Sowhatdowehavetodonow?Weneedtocreatethosevirtualhandstofeedourpocketwith
Chocolatebars!
Beforewecontinue,Idliketomentionwhywereabouttodothingsthewaywereabouttodo
thingsIvetriedmanycombinationsofcastingsandwhatnotbutalotofthecastingcasesdont
seemtoworkwiththecurrentUnrealMotionGraphicsversioninthecurrentUnrealEngine4
build.Thewaywereabouttofollowseemstoworkatthemomenthowever!
InthemainviewofyourUnrealEnginewindow(TheonewiththeGameView!),Theresa
ribbonatthetop,justabovetheingameview(WecoveredthisinBook#1!).Youhaveanumber
ofoptionsinthetopribbon,suchasQuickSettings,WorldSettings,Blueprints,Matinee.etc)
44
Step#4ClickWorldSettings,whichwilloptionadetailspanelintheright(WhereDetails
usuallyare).
Step#5ScrolldowntoGameModeintheWorldSettingswindow,andpresstheNew
button.NamethisGameModeBlueprintMainMenuGameMode.
IfyoucantseetheSelectedGameModeoptions,clicktheGreyrightarrownexttoSelected
GameModetoexpandthewindow.
WeneedtocreateaPlayerController,whichwillactastheconduitbetweenourUMGand
SaveBlueprint.
HeadbacktoourUMGfolderandcreateanewBlueprint.WhenthePickParentClass
windowopensup,selectPlayerController.
45
NamethisBlueprintPC_MainMenu.NowheadbacktotheWorldSettingsGameModearea
andsetthePlayerControllertoPC_MainMenu.
Nowthatitsbeenset,weneedtoconfiguretheBlueprintitself.DoubleClickthePC_MainMenu
blueprintintheContentBrowsertoopenitup!
PlayerController=Conduit!
Step#1WithinthePC_MainMenuBlueprintCreateanewVariable(Intagain!)andcallit
PC_Graphics.
46
Step#2IntheMainBlueprintview,RightClick(Ctrl+Click)andcreateanEventBeginPlay
node.
Note:Fromnowon,Ibelieveyoushouldknowhowtocreatenodes(RightClick[Ctrl+
Click])tobringuptheCBLandsearchforthenodeyouneed.SoIwillnolongerbe
tellingyouhowtocreatenodes!
Step#3CreateaDoesSaveGameExist?node.Thisnodedoesexactlywhatitsaysonthe
tin!
IntheSlotNameinput,typeinSettings.
WhatisSlotName?WhenweeventuallycreateaSaveGame,thiswilltelltheBlueprintwhere
tolookintheSaveGamefile!WhenwecreatetheSaveGame,welltellittosavethe
informationintotheSettingsslot.
Asthisnodeposesthequestion:DoesSaveGameExist?,Wehavetogivethenodetheability
toanswerthequestion.
Step#4CreateaBranchnode(WhichisessentiallyaTrueorFalsenode)andhookitinto
theoutputpinofDoesSaveGameExistandtheConditionpinintotheReturnValuepinof
DoesSaveGameExist.
47
WerenowgoingtosetwhathappensifaSaveGamedoesntexist.Everythingwecreatein
thenextfewstepswillstemfromtheFalseoutputofourBranch.
SaveGame=False!
IfaSaveGamedoesntexist,weregoingtohavetocreateit!
Step#1FromtheFalseoutputofourBranch,createandconnectaCreateSaveGame
Objectnode.
Step#2WithintheCreateSaveGameObjectnode,settheSaveGameClassunder
SelectClasstoSave_SaveGraphics.
NowweneedtotelltheBlueprintthatSaveGraphicsisathingandgiveitpermissiontomess
aroundwithitsvariables.
Step#3GrabthebluepinReturnValueanddragtotheright.TypePromoteandselect
PromotetoVariable.
IntheVariableWindow,NamethisnewlycreatedVariabletoSaveGame.
48
Tomakesureeverythingworksalright,GetSaveGamefromtheVariableLibrary,putitintothe
Blueprintanddragfromtheoutput,typinginCast(Select:CasttoSave_SaveGraphics)and
connectthisaftertheSetSaveGame.
WevenowcreatedtheSaveGameObject,itstimetogobacktotheBranchandbranchoffto
iftheSaveGameistrue!
SaveGame=True!
InsteadofCreatingaSaveGame(AsiftheBranchistrue,italreadyexists),wenowhaveto
LoadtheSaveGame.
Step#1CreateaLoadGameFromSlotnodeandconnectittothetruefromourBranch.
Step#2Justlikewedidbefore,SettheSlotNametoSettingsandthistimedragthe
SaveGamevariablefromVariableLibraryandSetit.HooktheinputsofSetSettingstothe
rightoutputofLoadGameFromSlotandhooktheReturnValueintoSetSettings.
ThereasonwevedonethisisbecauseiftheBranchwasfalse,weweresettingthe
SaveGamevariable.However,iftheBranchistrue,thenobviouslytheBlueprintwontexecute
anyoftheFalsecode.
49
Step#3JustlikewhatwedidintheFalsesetofevents,GetSaveGameanduseittoCast
toSave_SaveSettings.
Step#4FromtheAsSaveSaveGraphicsC,clickthepinanddragtotherightandtypein
GetGraphicsandselectit.
Step#5IntheVariableLibrary,draginPC_GraphicsandselectSet.Connectthisto
TargetS_GraphicsandthetoprightpinoftheCasttoSave_SaveGraphicsnode.
50
Whatdidwejustdo?WeretellingtheBlueprintthatwhatevertheSave_SaveGraphics
settingisforS_Graphics,thatiswhatiswhatwewantPC_MainMenusPC_Graphicstobe
too!
Itmaybeatadconfusingatthemoment,butdontworryPrettysooneverythingwillmake
sense!
WhatIwantyoutodonowthough,istocreatetheSwitchOnIntandExecuteConsole
CommandsexactlyastheywerebackintheUMGsApplybutton.FortheInputthough,use
thePC_Graphics.
Youshouldendupwithsomethinglikethis:
51
AndthisisthewholeBlueprintforPC_MainMenusofar:
WhatweneedtodonowissetitsothatwhenwepresstheApplybuttonintheUMG,itwill
savethechanges.Hereshowweregoingtodothat.
OnButtonPress,SaveOurSettings!
Step#1WhilestillinourPC_MainMenu,createanewevent(EventTick).Thismeansthis
codewillfireeverysingleframe!
Step#2IntheVariableLibrary,createanewVariable.SetittoaBoolandcallitApply!
Step#3CreateaBranch,andconnectittotheTickandbringintheApplyboolandattachit
totheBranch.
IfApplyhasbeenpressed,thenweneedtoaltertheSaveGamefiletostorethenew
information.
52
Step#4GrabtheSaveGamevariablefromtheVariableLibraryanduseitonceagainto
casttoSave_SaveGraphicsandconnectthistotheTrueoftheBranch.
Step#5FromtheAsSaveSaveGraphicsC,clickthepinanddragtotherightandtypein
SetSGraphics(NotGet!)andselectit.
Step#6BringPC_GraphicsintotheBlueprintviatheVariableLibraryonceagainandhook
thisintotheSetSGraphicsnode.
Step#7FromtherighthandsideoutputofSetSGraphics,createaSaveGameToSlot
nodeandconnectthemtogether.
Step#8GrabtheSaveGamevariablefromtheVariableLibrary,dragitintotheBlueprintand
connectittotheSaveGameObjectandSettheSlotNametoSettings.
Step#9AfterSaveGameToSlot,grabApplyfromtheVariableLibrary(Setitwhen
asked!)andsetittofalse(Byleavingthecheckboxunchecked)!
AndweredonewiththisBlueprint!TheresonlyacouplemorethingslefttodoSowhatarewe
waitingfor?Save&CompiletheBlueprintthenyourefreetocloseit!
ThefinalfewstepswillneedanadventurebackintoourMainMenuOptionsUMGBlueprint!
53
TheFinalShowdown!
OnceyourebackinyourMainMenuOptions,gointoyourGraphview.OpentheEventGraph
whichshouldbeinatababovetheBlueprintview.Incaseitsnot,youcanfinditnearthetopof
theVariableLibrary.
Step#1WhenintheEventGraph,weneedanEventBeginPlaybuttheydontworkinUMGs.
WecanhoweverusetheUMGequivalentConstruct.SodojustthatCreateanEvent
Constructnode.
Step#2OpentheCompactBlueprintLibraryandtypeinGetPlayerController.
Step#3FromtheReturnValuepinofGetPlayerController,ClickandDragtotheright.
WhentheCBLopensup,typeinCasttoPC_MainMenuandconnectittotheEvent
Constructnode.
Step#4FromAsPCMainMenuC,grabthepinanddragtotheright.TypeinGetPC
Graphicsandselectit.
Step#5GointoyourVariableLibraryandgrabGraphicsSettingsanddragitintothe
Blueprintandwhenasked,selectSet.
54
Step#6ConnecttheSetGraphicsSettingstothetopemptyoutputpinoftheCastand
connecttheGetPCGraphicsoutputintotheSetGraphicsSettingsnode.
WerenowsoclosetothefinishlineIcanalmosttasteit!Save&CompilethisBlueprint,thengo
intoyourDesignerview.
ClicktheApplybuttonandwherewecreatedBindsbefore,theresalittlemagnifyingglassnext
tothenameofourBindwecreatedforitbefore.Clickthemagnifyingglasstoopenits
Blueprint.
Step#1Alt+clickthelefthandsideinputofSwitchOnInttobreaktheconnectiontothestart
oftheBlueprintasweneedtoaddafewmorenodeshere.
Step#2JustlikebeforecreatetheGetPlayerControllernodeanduseittoCastto
PC_MainMenu.
55
Step#3FromAsPCMainMenuC,clickanddragtotheright.WhentheCBLopensup,
typeinSetPCGraphics.Oncethenodehasbeencreated,clickthepinnexttoAsPCMain
MenuConceagainandthistimetypeinSetApply.
Step#4IntheSetApplynode,ticktheboxinsideittosetApplytotrueandconnectthis
nodeintotheoutputofSetPCGraphics.
Step#5HeadintotheVariableLibraryanddragGraphicsSettingsintotheBlueprint.When
asked,selectGetandhookthisintotheSetPCGraphicsnode.
NowsimplyconnecttheoutputontherightoftheSetApplynodeandhookitintotheSwitchon
IntnodethatwecreatedinthisBlueprintearlier.
56
EndOfTheBook!
IsthistheendofthebookorthestartofBook#3?Whoknows!
Inallseriousness,thishasbeenanabsoluteblast!IvelovedwritingthesebooksandIwill
continuetodosotohelpeachandeveryoneofyou!
Asalways,ifyouvegotanyquestionsorifyoudliketoshowmewhatyouvecreatedwiththis
book,thendontdelayemailmetoday!contact@kitatusstudios.co.uk
IhopeyouveenjoyedreadingandIllseeyounexttime!
Peaceout!
RyanS,ProjectLead@KitatusStudios.
57