本指南說明如何使用 Google 行動廣告 Unity 外掛程式的廣告 使用刊登位置功能,即可為應用程式建立及顯示廣告。
必要條件
Unity 2017.4 以上版本。
下載 並匯入早期版本的 GMA Unity 外掛程式
設定您的 AdMob 應用程式 ID: Unity 編輯器
初始化 Google Mobile Ads SDK
載入廣告前,請呼叫
MobileAds.Initialize()
,包含 Action<InitializationStatus>
回呼。這個
只需完成一次即可,最好在應用程式啟動時。
using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
...
public void Start()
{
// Initialize the Mobile Ads SDK.
MobileAds.Initialize((initStatus) =>
{
// SDK initialization is complete
});
...
}
}
建立廣告刊登位置
想透過 Google 行動廣告顯示橫幅廣告的第一步,就是建立 設定廣告刊登位置你可以選取橫幅廣告的刊登位置 從 素材資源 > 設定的插頁式或獎勵格式Google 行動廣告 >廣告 Unity 編輯器中的刊登位置。接著 3 個客層廣告刊登位置 所有設定都可供使用
若要新增廣告刊登位置,請按一下底部的 [新增刊登位置] 按鈕。 在這個範例中就是「花」 以及排在前端的其他字詞您可以在檢查器檢視畫面中設定廣告刊登位置。
廣告刊登位置設定
每個刊登位置都具備以下屬性:
- 刊登位置名稱
- 刊登位置名稱。用來在 。
- 廣告格式
- 橫幅廣告、獎勵廣告、插頁式廣告。廣告類型。
- 廣告單元 ID
- 提供 Android 和 iOS 版的橫幅廣告單元 ID。您需要提供這項資訊 至少一個廣告單元 ID。
- 在不同場景中保持一致
- 勾選這個選項後,無論場景為何,橫幅都會持續顯示在畫面上
(行為與
DontDestroyOnLoad
)。 - 已啟用自動載入
- 勾選這個選項後,系統就會在與影片相關的場景時自動載入廣告 廣告刊登位置
以下螢幕截圖是名為 My Awesome Banner (我的優質橫幅廣告)。
將 AdGameObject 新增至場景
您可將 AdGameObject 加入橫幅廣告、插頁式廣告或獎勵廣告格式的 使用 GameObject > 的場景Google 行動廣告。選取 格式,在啟用的場景中新增刊登位置。
將 AdGameObject 加入場景後,您會看到 GameObject 代表廣告在 Unity 編輯器的階層檢視中。
只要變更 GameObject 的名稱,即可變更刊登位置名稱 機器學習是向機器提供資料和答案 讓機器自行探索規則的科學以下螢幕截圖是 AdGameObject 的範例 橫幅廣告
AdGameObject 設定
您可以透過檢查器在情境中設定 AdGameObject 廣告遊戲物件 (指令碼) 元件設定中的檢視畫面。
- 廣告刊登位置
從已設定的刊登位置下拉式清單中選取廣告刊登位置。 清單只會包含正確格式的廣告單元。例如橫幅廣告 遊戲物件下拉式選單只會顯示已設定的橫幅廣告刊登位置。
BannerAdGameObject
設定 (僅限橫幅廣告)
- 大小:選取要使用的橫幅大小。
- 「錨定自動調整橫幅廣告」提供下列更多選項:
- 螢幕方向:選取用來計算廣告的裝置方向 。
- 使用全螢幕寬度:如勾選這個選項,橫幅廣告就會佔據 全螢幕寬度。您可以調整螢幕寬度百分比 (50~99%), 取消勾選「使用全螢幕寬度」選項。
- 「自訂」可讓您指定橫幅廣告的寬度和高度。
- 「錨定自動調整橫幅廣告」提供下列更多選項:
- 廣告位置:選取橫幅廣告的刊登位置。
回呼
您可以實作與廣告回呼對應的函式。舉例來說 您想要處理橫幅廣告載入失敗時的處理方式:
建立與廣告回呼相容的函式。
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
將包含上述函式的指令碼附加至 場景。
按一下 + 按鈕,然後拖曳請將您已附加的 GameObject 建立指令碼
選取要連結至廣告回呼的函式。對於 參數化廣告回呼,請選取用來接受動態參數的函式 變數,以便從 SDK 取得參數值。
透過指令碼使用 AdGameObject
從指令碼取得 AdGameObject 例項
所有 AdGameObject
物件都有便利的方法 LoadAd()
。這麼做會載入
不指定 AdRequest
的廣告。如要套用指定目標,應使用
LoadAd(AdRequest adRequest)
。
如要取得 AdGameObject 的例項,請使用以下每個格式的方法:
橫幅廣告
MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");
傳回的 BannerAdGameObject
物件也有便利方法
Hide()
和Show()
。
插頁式
MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");
傳回的 InterstitialAdGameObject
物件具有便利方法
ShowIfLoaded()
。
已獲得獎勵
MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");
傳回的 RewardedAdGameObject
物件具有便利方法
ShowIfLoaded()
。
舉例來說,您可以取得 BannerAdGameObject
的執行個體,並將其載入為
如下:
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;
public class BannerTestScript : MonoBehaviour
{
BannerAdGameObject bannerAd;
void Start()
{
bannerAd = MobileAds.Instance
.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");
bannerAd.LoadAd();
...
}
...
}
如果有名為 BannerAd 的 BannerAdGameObject
,您可以取得
如下所示:
MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");
存取 AdGameObject 中的基礎廣告物件
這些程式碼片段示範如何存取與 呼叫 AdGameObject
橫幅廣告
BannerAdGameObject bannerAd = MobileAds.Instance
.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");
// Access BannerView object
BannerView bannerView = bannerAd.BannerView;
插頁式
InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");
// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;
已獲得獎勵
RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
.Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");
// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;
範例
顯示插頁式廣告
以下舉例說明如何設定遊戲,以載入及顯示插頁式廣告 呼叫廣告。
在場景中新增 InterstitialAdGameObject
,然後開啟「Auto Load」
啟用功能,讓廣告在場景載入時自動載入。
接著,請確認您已按照下列方式初始化 SDK。請注意, 要是您忘記初始化 將機器學習工作流程自動化
接著,呼叫
InterstitialAdGameObject.ShowIfLoaded()
函式。以下程式碼顯示
在場景轉換之間顯示插頁式廣告的範例。
using UnityEngine;
using UnityEngine.SceneManagement;
using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;
public class MainScene : MonoBehaviour
{
InterstitialAdGameObject interstitialAd;
void Start()
{
interstitialAd = MobileAds.Instance
.GetAd<InterstitialAdGameObject>("interstitial");
MobileAds.Initialize((initStatus) => {
Debug.Log("Initialized MobileAds");
});
}
public void OnClickShowGameSceneButton()
{
// Display an interstitial ad
interstitialAd.ShowIfLoaded();
// Load a scene named "GameScene"
SceneManager.LoadScene("GameScene");
}
}
由於您已為廣告刊登位置啟用「自動載入」功能,因此您不需要 需要明確地請求廣告場景變更時,插頁式廣告會 就會顯示。
如果您想要手動請求廣告,請停用 [自動載入] 功能,
顯示廣告刊登位置檢查器,並呼叫 InterstitialAdGameObject.LoadAd()
函式。下列程式碼片段說明如何手動請求
廣告。
public class MainScene : MonoBehaviour
{
InterstitialAdGameObject interstitialAd;
void Start()
{
interstitialAd = MobileAds.Instance
.GetAdGameObject<InterstitialAdGameObject>("interstitial");
MobileAds.Initialize((initStatus) => {
Debug.Log("MobileAds initialized");
// Load an interstitial ad after the SDK initialization is complete
interstitialAd.LoadAd();
});
}
...
}
處理「觀看獎勵廣告」按鈕狀態
以下舉例說明如何啟用「觀看獎勵廣告」使用廣告 刊登位置
在場景中新增 Button GameObject (在此範例中名為 Button), 會用來顯示獎勵廣告。我們會讓這個按鈕 獎勵廣告可供放送時。
在 Start()
方法中,將按鈕的使用狀態變更為 false
。這個
會讓按鈕從場景中消失
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
在場景中加入 RewardedAdGameObject
,然後選取 AdMob 示範獎勵廣告
下拉式選單中的「廣告刊登位置」。
在 RewardedAdGameObject
檢查器的「Callbacks」區段下方,按一下
On Ad Loaded() 的 + 按鈕,即可呼叫函式
系統載入獎勵廣告時。
將您在上個步驟新增的 Button GameObject 拖曳到這裡
「None (物件)」欄位。從下拉式選單中選取要呼叫的函式。
按一下 [No Function] (無函式)GameObjectSetActive(bool),然後點選核取方塊,
它會將 true
做為參數 (呼叫 SetActive(true)
) 傳送。
在「回呼」部分中,您也可以連結即將呼叫的事件
RewardedAd.OnUserEarnedReward
事件觸發時。詳情
請參閱本節。
接著,建立會在使用者點選獎勵廣告時顯示的按鈕。從開啟 Click()按鈕檢查器中的「Callbacks」部分,按一下 + 按鈕, 拖曳獎勵廣告刊登位置 GameObject (在這個例子中稱為獎勵廣告) 範例) 變更為「無 (物件)」欄位。
接著,將 RewardedAdGameObject.ShowIfLoaded()
函式附加至按鈕的
On Click() 回呼。
最後,別忘了初始化 SDK。以下程式碼片段是 下方範例所用的完整程式碼:
using UnityEngine;
using GoogleMobileAds.Api;
public class MainScene : MonoBehaviour
{
void Start()
{
GameObject.Find("Button").SetActive(false);
MobileAds.Initialize((initStatus) => {
Debug.Log("Initialized MobileAds");
});
}
}
執行專案後,如果畫面上有顯示這個按鈕 獎勵廣告已載入並準備顯示。
設定 獎勵 AdGameObject 的獎勵回呼
以下舉例說明如何設定獎勵廣告的獎勵回呼 以便在回呼函式執行時,向使用者提供獎勵 物件。
建立新的指令碼,並定義接受 Reward
做為參數的函式
如下所示。
using UnityEngine;
using GoogleMobileAds.Api;
class RewardedTestScript : MonoBehaviour {
...
public void OnUserEarnedReward(Reward reward) {
Debug.Log("OnUserEarnedReward: reward=" +
reward.Type + ", amount=" + reward.Amount);
}
...
}
將 RewardedTestScript
指令碼附加至任何 GameObject (廣告除外)
刊登位置 GameObject)。在此範例中,它會附加到主要的
相機 GameObject。
在場景中加入 RewardedAdGameObject
。接著在「回呼」部分下方
在 RewardedAdGameObject
檢查器中,按一下「On user」(使用者端) 上的「+」按鈕
衍生獎勵 (獎勵),以便在獎勵出現時呼叫函式
未授予使用者的存取權
拖曳您在上一個步驟中新增的主要相機 GameObject 步驟新增至「無 (物件)」欄位。選取要從 。按一下 [No Function] (無函式)獎勵 TestScript >OnUserGainedReward。
請在執行專案並觀看獎勵廣告後
將會叫用 RewardedTestScript.OnUserEarnedReward()
因與廣告互動而獲得獎勵。