2023年7月5日 星期三

介接Unity Ads

在行動平台中, 放廣告是一種常見的收益方式

而用Unity開發時除了使用一些插件來植入廣告外, 其官方本身也有提供廣告插放的服務

本篇將介紹如何介接Unity Ads, 並實作一個獎勵式廣告作為範例


另外本篇是使用Unity 2023.3版本為範例, 不過這個功能很早之前就有了, 相信早幾個版本的也是大同小異


1.啟用Server與創建Unity Project

要使用Unity Ads, 首先必須啟用Unity Gaminig Services


打開你的Unity專案, 在Project Setting中選擇Services

選好組織機構(Organizations)後, 即可點選Create project ID, 在Unity Gaminig Services中就會創建一個跟你專案目錄一樣名稱的專案並與本地專案檔聯繫起來


2.取得Game ID

Game ID是產品在各平台中對應的ID, 要有這個才能初始化Unity Ads


開啟 https://dashboard.unity3d.com/  , 選擇Monetization後選擇要設定的專案

點選Get Started後會開啟設定視窗, 第一頁是選擇你的中介方案與廣告商

第二頁是選擇廣告設定, 有關用設定的可以沿用先前專案的設定, 本篇是用新的開始

第三頁是選擇投放策略, 選你喜歡的就好

第四頁是設定設定產品在平台中的商店ID

還沒上架時可以先選"My app is not live in an app store yet", 不過上架完要記得回來補齊喔

接下來按下Add project就可以取得Game ID了

於此後台就設定的差不多了, 回到Unity Editor繼續作業


3.導入Advertisement

Advertisement就是Unity Ads的SDK, 支援Android跟iOS平台

開啟 Window > Package Manager, 搜尋Advertisement並安裝(Install)



4.初始化

Runtime時要先初始化Unity Ads才能運作

創建設定Game Id與初始化的腳本AdsInitializer



5.實作獎勵式廣告

所謂的獎勵式廣告就是使用者在觀看完廣告後能夠獲得一些獎勵


本篇將實作一個獎勵式廣告按鈕腳本(示範平台為Android), 其正常流程為:

讀取廣告->使用者按下廣告按鈕->顯示廣告->廣告播放完成->使用者獲得獎勵


創建廣告按鈕腳本RewardedAdsButton


在場景上建立一個UGUI的按鈕, 先關掉該按鈕物件


將AdsInitializer掛在Main Camera上, 設定Game Id與InitializationCompleteEvent(把按鈕開啟)

P.S. 在產品上線時記得把Test Mode勾掉

將RewardedAdsButton掛在Button上, AdsCompleteEvent就是設定廣告播完後你要做的事


以上, 順利的話在run time按下廣告按鈕後會看到:


參考資料: https://docs.unity.com/ads/manual/UnityAdsHome 

2023年4月28日 星期五

利用Steam統計來實作Steam成就

Steamworks有提供統計功能, 讓開發者可以便捷的將玩家遊玩的數據紀錄下來(ex: 破關次數、通關時間, etc...)

此功能同時也能連動於Steam成就, 也就是可以實現"當玩家的某個統計數據達到某個值後, 解鎖某個成就"

應用此機制, 開發者可以於程式中只實作統計紀錄, 將資料儲存、成就達成判斷、和成就解鎖這些事交給後台

下面將說明如何實作:

後台設置

本篇假設開發者已於Steamworks建立應用程式
1. 從Steamworks的主控台選擇要設置的應用程式, 進入其 技術工具->編輯Steamworks設定 頁面
2. 進入 統計與成就->統計 頁面, 新增統計欄位, 設置API名稱等資料
3. 進入 統計與成就->成就 頁面, 新增成就欄位, 設置API名稱等資料
4. 於成就欄位中的 進度數據 一欄選擇要參考的統計API
5. 將解所成就的條件值設定於最高欄位, 當參考的統計API數值達到其以上時, 即解鎖成就
(比如你希望玩家的T1_COUNT達到10以上實獲得成就, 就設定10)
(筆者一開始搞錯設定在最小值, 最高沒設定, 結果就造成了悲劇)

6. 發佈變更使設定生效

程式實作

本篇是於Unity中使用Steamworks.NET來實作, Steamworks.NET的導入與初始化不於本篇贅敘, 直接進入API使用環節
1. 使用SteamUserStats.SetStat, 設定值於指定的統計API
2. 如希望在玩家能即時得到成就解鎖, 設定完Stat後要呼叫SteamUserStats.StoreStats, 否則會在關閉程式時才會把資料傳給後台