在遊戲中加入貨幣與虛擬商店
如果遊戲中的玩家已經通關,或開始對遊戲感到厭倦,打造一間可解鎖道具或角色的商店,是提升遊戲重玩價值和留存率的好方法。在本教學中,我們將介紹如何建立遊戲內商店,讓使用者使用在遊戲中賺取的點數「購買」道具!
在這個範例中,我們的遊戲會非常簡單:只要不斷點擊,就能獲得更多點數!如果想要每次點擊獲得更多點數,就升級你的「玩家」。 你可以自由設計簡單或複雜的遊戲。 首先,我們要設定一套能在所有場景共用的貨幣系統。
顯示貨幣
首先,我們要前往 Global UI,新增一個代表貨幣的標籤,並將文字設為 0。再新增另一個標籤,說明前一個標籤代表什麼。玩家就能看到自己有多少錢。你可以依照喜好設計標籤樣式!
保存貨幣
我們要確保金額能在不同遊戲階段之間保存。這表示遊戲進行時要保存金額,並且在玩家再次進入遊戲時載入金額。選取代表貨幣金額的標籤,並編輯它的行為,就能完成這項設定。
我們先來設定將貨幣金額保存到檔案中。我們希望能從場景中的任何位置觸發保存,因此新增一個 Receive Message 行為。在這個範例中,讓它接收 saveMoney 事件。
場景中任何使用 saveMoney 事件的 Broadcast Message 行為,都可以觸發這個行為。這表示我們可以在任何需要的時間和位置觸發保存。
接著,我們要取得要保存的貨幣金額,因此新增 Get Label,並將 Receive Message 連接到它。請確認取得的是貨幣金額標籤的值。
取得要保存的貨幣金額後,新增 Modify Save File 行為,並將 Get Label 連接到它。在這個行為中,請確認修改方式設為 Set Key,而金鑰類型設為 Existing。
點選 Select or Create Key 以建立金鑰,並在文字欄位中輸入 Money。按下 + 按鈕建立金鑰。現在,行為應該會使用 Money 金鑰。這個金鑰會對應到保存檔中的貨幣金額,因此之後要取回資料時,可以再次使用相同的金鑰。你可以隨意命名金鑰,但取回同一筆已保存資料時,務必使用相同的金鑰。 你的行為應該會如下圖所示。
現在,我們要將 Get Label 行為輸出的 文字,接到 Modify Save File 行為。
恭喜,保存功能已完成! 上述行為會取得標籤中的內容(代表貨幣金額),並在每次 Broadcast Message 行為發送 saveMoney 事件時,將內容保存到檔案中。
稍後會介紹如何觸發保存;現在先來設定從檔案載入貨幣金額。新增一個 Frame Event 行為,並將觸發時機設為 Scene Start。這會在場景開始運作前觸發載入。請確認已啟用 Trigger on Restart,讓場景重新啟動時也能觸發。
新增 Load from File 行為,再將 Frame Event 行為連接到它。接著,你可以選取先前建立的 Money 金鑰。
Default Value 是玩家初始擁有的貨幣金額。在這個範例中,我們輸入 1000。如果玩家沒有與該金鑰關聯的先前保存值,就會載入預設值。
到目前為止,我們已成功載入數值,但還沒有對它做任何處理。在這個範例中,我們要更新貨幣金額標籤,顯示載入的數值。新增一個 Set Label 行為即可!
像下圖這樣,將 Load from File 載入的數值接到 Set Label。
恭喜,現在你可以保存和載入貨幣了! 你的行為應該會如下圖所示——左側是保存功能,右側是載入功能。
賺取貨幣
我們還沒有加入賺取貨幣的方法。你可以讓玩家透過各種方式賺取貨幣;在這個範例中,我們會保持簡單,讓玩家點擊餅乾賺錢。聽起來耳熟嗎?
場景中有一個餅乾圖案,我們希望玩家點擊它時能獲得 1 點。接著來編輯它的行為。
現在設定成玩家碰觸餅乾時,貨幣金額增加 1。請確認選取了正確的標籤!
這樣能正常運作,但還不會保存。增加或扣除貨幣後,我們應使用 Broadcast Message 行為保存變更,如下所示——每次要觸發保存時,都應使用這個行為。 我們會重複使用 saveMoney 事件金鑰,這正是建立保存功能時在 Receive Message 行為中使用的金鑰。
太棒了,現在你已經建立好一套會持續保存的貨幣系統! 你可以盡情點擊餅乾,進度都會保存。離開遊戲後再回來,貨幣金額應該會維持原本的數值。
設定商店
現在你已經有一套完善的貨幣系統,接下來就來加入讓玩家花錢換取物品的功能吧!建立一個名為 Shop 的新圖層,並在這裡依照自己的想法設計商店。你可以自由設計商店的外觀。
為了節省時間並簡化流程,我們在商店中只放兩種物品,但你可以依需求新增任意數量的物品。本例中的物品如下:
- Click Multiplier - 點擊餅乾時可獲得的點數。花費 100 貨幣可將此數值增加 1。
- Passive Income - 每秒可獲得的點數。花費 200 貨幣可將此數值增加 20。
請確保玩家能進入和離開商店。在這個範例中,我們只會隱藏或顯示 Shop 圖層,不會設定其他行為。
就像處理貨幣金額標籤一樣,讓 Click Multiplier 和 Passive Income 也以相同方式載入和保存。使用之前設定過的相同一組行為即可。
接著,我們來處理 Click Multiplier 物品。選取它下方的 BUY 標籤,並編輯其行為。
設定成玩家碰觸 BUY 標籤時,先取得玩家擁有的貨幣金額。使用 Get Label,並選取代表貨幣金額的標籤。
你可以使用 If 行為檢查玩家是否沒有足夠的錢購買物品。如果不夠,可以通知玩家。在這個範例中,如果玩家的點數少於 100,就會透過 Alert 行為通知玩家。
另一方面,如果玩家有足夠的貨幣購買物品,我們只要將 Click Multiplier 增加 1 即可。
別忘了也要依照價格扣除貨幣並保存! 你不會想讓玩家免費拿到這個物品吧?
Passive Income 也採用相同做法。唯一需要變更的是價格、要增加數值的標籤,以及要保存的內容。
做得好,現在你已經有一間能正常運作的商店了! 不過,這些物品目前在遊戲中還沒有任何效果,只是一些數字而已——接著就來讓它們派上用場吧。
讓商店物品發揮作用
我們已經決定好商店物品的功能:
- Click Multiplier - 點擊餅乾時可獲得的點數。花費 100 貨幣可將此數值增加 1。
- Passive Income - 每秒可獲得的點數。花費 200 貨幣可將此數值增加 20。
接著就來讓這些物品真正發揮作用,先從 Click Multiplier 開始。在餅乾的行為中,我們可以像下圖這樣從檔案載入乘數值。
然後,就可以使用載入的數值,作為要增加到貨幣中的數量。
每次點擊餅乾時,都會從檔案取回乘數值,並將它加到貨幣中。完成後,我們就可以處理 Passive Income。新增一個標籤並為它命名——這個標籤將用來設定相關行為。玩家不應看見這個標籤,所以請將它隱藏在畫面外。
在行為中,我們可以設定一個每 1 秒重複執行的 Timer,持續取得 Passive Income 的金額。
接著,設定貨幣每次增加 Passive Income 的金額,並像下圖這樣保存。
接下來呢?
做得好!現在你已經有一套能正常運作的商店和貨幣系統了! 雖然外觀還不算精美,但你可以依照喜好美化並擴充功能。
玩家現在可以用手上的錢,在商店購買實用物品。你可以新增更多商店物品、增加賺取貨幣的方法,或進一步完善整個系統!目前購買物品時,價格不會變動,因此玩家賺得越多,就越容易買到物品。你能讓價格隨著購買次數增加嗎?
你也可以建立不同的商店,並在其他場景中使用這套貨幣系統!
如果你想下載這個專案,請點此下載!

