? ? ? ? 游戲過程中我們經(jīng)常需要保存一些全局變量,如玩家的總得分、當(dāng)前生命值等等,在我們切換關(guān)卡之后它們的數(shù)值保持不變。在UE中主要使用SaveGame類對象和GameInstance對象。
? ? ? ? 首先,點(diǎn)擊右鍵創(chuàng)建藍(lán)圖類,輸入save創(chuàng)建SaveGame藍(lán)圖類對象,命名為MySaveGame;輸入Gameins創(chuàng)建一個(gè)GameInstance藍(lán)圖類對象,命名為GameManager。
?
?
????????MySaveGame中定義一些全局變量,如分?jǐn)?shù)、玩家生命值。GameManager中需要定義一個(gè)MySaveGame類型的變量,并且這里使用玩家生命值來進(jìn)行演示。在GameManager初始化的時(shí)候使用CreateSaveGameObject來創(chuàng)建SaveGame類對象,類型指定為我們自定義的MySaveGame.
同時(shí)定義了2個(gè)函數(shù)用來設(shè)置和獲取玩家生命值。
?
?
?對于場景,我就簡單的設(shè)計(jì)了2個(gè)場景用于切換。
?接下來設(shè)計(jì)玩家類對象,對于系統(tǒng)自帶的ThirdPersonCharacter藍(lán)圖我不打算把自己游戲的玩家功能放在里面,所以我創(chuàng)建了一個(gè)名為MyPlayer的藍(lán)圖組件類。選中場景中的第三人稱角色,點(diǎn)擊下面的"Add Component"按鈕,再選擇第一項(xiàng)"NewBlueprintScriptComponent",創(chuàng)建樂意藍(lán)圖組件類命名為MyPlayer。
?MyPlayer中可以定義一些自己游戲中會(huì)用到的玩家相關(guān)的變量,如生命值、分?jǐn)?shù)等,同時(shí)需要定義一個(gè)GameManager類對象,方便對玩家的變量進(jìn)行保存。GameManager類對象使用CastTo節(jié)點(diǎn)配合GetGameInstance函數(shù)獲取到并對變量進(jìn)行設(shè)置。
?而在ThirdPersonCharacter類中需要定義一個(gè)GameManger類對象和一個(gè)MyPlayer類對象。對于MyPlayer類對象使用GetComponentbyClass函數(shù)來獲取,因?yàn)槲覀儺?dāng)初用的是"AddComponent"
?????????下面對功能進(jìn)行測試,測試代碼寫在ThirdPersonCharacer類中。按小鍵盤上的9和點(diǎn)號(hào)兩個(gè)鍵進(jìn)行場景切換,因?yàn)?個(gè)場景中都有第三人稱角色ThirdPersonCharacer存在,所以下面的代碼在2個(gè)場景中都能執(zhí)行。按7鍵玩家生命值減1并通過GameManager進(jìn)行保存,按8鍵獲取玩家當(dāng)前生命值并顯示,切換場景后功能正常。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-637420.html
?文章來源:http://www.zghlxwxcb.cn/news/detail-637420.html
?
?
到了這里,關(guān)于UE 如何保存全局變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!