คู่มือนี้จะแสดงวิธีใช้ปลั๊กอินตําแหน่งโฆษณาของ Google Mobile Ads Unity เพื่อสร้างและแสดงโฆษณาในแอปของคุณ
สิ่งที่ต้องมีก่อน
Unity 2017.4 ขึ้นไป
ดาวน์โหลด และนําเข้าปลั๊กอิน GMA Unity บิลด์แรก
กําหนดรหัสแอป AdMob ใน Unity Editor
เริ่มต้นใช้งาน SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google
ก่อนโหลดโฆษณา โปรดเริ่มต้น 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 Editor จากนั้นระบบจะตั้งค่าตําแหน่งโฆษณาสาธิต 3 ตําแหน่งและพร้อมใช้งาน
หากต้องการเพิ่มตําแหน่งโฆษณาใหม่ ให้คลิกปุ่มเพิ่มตําแหน่งใหม่ที่ท้ายรายการ คุณจะกําหนดค่าตําแหน่งโฆษณาจากมุมมองเครื่องมือตรวจสอบได้
การกําหนดค่าตําแหน่งโฆษณา
โดยแต่ละตําแหน่งจะมีพร็อพเพอร์ตี้ต่อไปนี้
- ชื่อตำแหน่ง
- ชื่อตําแหน่งโฆษณา ใช้เพื่อระบุตําแหน่งเมื่อตั้งค่าโฆษณาในฉาก
- รูปแบบโฆษณา
- แบนเนอร์ โฆษณาที่มีการให้รางวัล โฆษณาคั่นระหว่างหน้า ประเภทโฆษณา
- รหัสหน่วยโฆษณา
- ระบุรหัสหน่วยโฆษณาแบนเนอร์สําหรับ Android และ iOS คุณต้องระบุรหัสหน่วยโฆษณาอย่างน้อย 1 รายการ
- ต่อเนื่องในทุกฉาก
- เมื่อเลือกตัวเลือกนี้ แบนเนอร์จะคงอยู่บนหน้าจอโดยไม่คํานึงถึงการเปลี่ยนแปลงฉาก (ลักษณะการทํางานเดียวกับ
DontDestroyOnLoad
) - เปิดใช้การโหลดอัตโนมัติแล้ว
- เมื่อเลือกตัวเลือกนี้ ระบบจะโหลดโฆษณาโดยอัตโนมัติเมื่อฉากที่เชื่อมโยงกับตําแหน่งโฆษณาโหลดขึ้นมา
ภาพหน้าจอต่อไปนี้แสดงตัวอย่างตําแหน่งโฆษณาชื่อ My Awesome Banner
การเพิ่ม AdGameObject ลงในฉาก
คุณเพิ่ม AdGameObject สําหรับรูปแบบแบนเนอร์ โฆษณาคั่นระหว่างหน้า หรือโฆษณาที่มีการให้รางวัลลงในฉากได้โดยใช้ GameObject > Google Mobile Ads ใน Unity Editor เลือกรูปแบบเพื่อเพิ่มตําแหน่งลงในฉากที่ใช้งานอยู่
เมื่อเพิ่ม AdGameObject ลงในฉากแล้ว คุณจะเห็น GameObject ที่นําเสนอโฆษณาในมุมมองลําดับชั้นของ Unity Editor
คุณเปลี่ยนชื่อตําแหน่งได้โดยเปลี่ยนชื่อ GameObject เอง ภาพหน้าจอต่อไปนี้แสดงตัวอย่างของ AdGameObject ที่มีชื่อว่าโฆษณาแบนเนอร์
การตั้งค่า AdGameObject
คุณกําหนดค่า AdGameObject ในฉากได้จากมุมมองเครื่องมือตรวจสอบในการตั้งค่าสําหรับคอมโพเนนต์ Ad Game Object (Script)
- ตำแหน่งโฆษณา
เลือกตําแหน่งโฆษณาจากรายการแบบเลื่อนลงของตําแหน่งที่กําหนดค่าไว้ รายการนี้ประกอบด้วยหน่วยโฆษณาที่มีรูปแบบที่ถูกต้องเท่านั้น ตัวอย่างเช่น สําหรับออบเจ็กต์เกมโฆษณาแบนเนอร์ เมนูแบบเลื่อนลงจะแสดงเฉพาะตําแหน่งโฆษณาโฆษณาแบนเนอร์ที่กําหนดค่าไว้
- การกําหนดค่าสําหรับ
BannerAdGameObject
(แบนเนอร์เท่านั้น)
- ขนาด - เลือกขนาดของแบนเนอร์ที่ต้องการใช้
- แบนเนอร์แบบปรับขนาดได้แบบโฆษณา Anchor มีตัวเลือกเพิ่มเติมดังนี้
- การวางแนว - เลือกการวางแนวของอุปกรณ์ที่ใช้ในการคํานวณความสูงของโฆษณา
- ใช้ความกว้างเต็มหน้าจอ - เมื่อเลือกตัวเลือกนี้ แบนเนอร์จะมีความกว้างของหน้าจอเต็ม คุณปรับ % ความกว้างของหน้าจอ (50~99%) ได้ หากยกเลิกการเลือกตัวเลือกใช้ความกว้างเต็มหน้าจอ
- กําหนดเองให้คุณระบุความกว้างและความสูงของแบนเนอร์ได้
- แบนเนอร์แบบปรับขนาดได้แบบโฆษณา Anchor มีตัวเลือกเพิ่มเติมดังนี้
- ตําแหน่งโฆษณา - เลือกตําแหน่งที่จะวางแบนเนอร์
โค้ดเรียกกลับ
คุณใช้งานฟังก์ชันที่สอดคล้องกับการเรียกกลับโฆษณาได้ เช่น หากต้องการจัดการว่าโฆษณาโฆษณาแบนเนอร์โหลดไม่สําเร็จ ให้ทําดังนี้
สร้างฟังก์ชันที่เข้ากันได้กับการเรียกกลับโฆษณา
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
แนบสคริปต์ที่มีฟังก์ชันด้านบนกับ GameObject ในฉาก
คลิกปุ่ม + จากนั้นลากและวาง &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();
...
}
...
}
หากมี BannerAdGameObject
ชื่อ BannerAd คุณจะได้รับอินสแตนซ์ดังนี้
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;
ตัวอย่าง
แสดงโฆษณาคั่นระหว่างหน้า
ตัวอย่างวิธีกําหนดค่าเกมให้โหลดและแสดงโฆษณาคั่นระหว่างหน้าโดยใช้ AdGameObject
เพิ่ม InterstitialAdGameObject
ลงในฉากและเปิดฟีเจอร์เปิดใช้การโหลดอัตโนมัติเพื่อให้โฆษณาโหลดโดยอัตโนมัติเมื่อฉากโหลด
จากนั้น ให้ตรวจสอบว่าได้เริ่มต้น SDK โดยใช้สิ่งต่อไปนี้ โปรดทราบว่าฟีเจอร์โหลดอัตโนมัติใน AdGameObject จะไม่ทํางานหากคุณลืมเริ่มต้นใช้งาน 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();
});
}
...
}
จัดการสถานะโฆษณา & โฆษณาที่มีการให้รางวัล
ลองดูตัวอย่างวิธีเปิดใช้ปุ่ม "ดูโฆษณาที่มีการให้รางวัล' โดยใช้ตําแหน่งโฆษณา
เพิ่มปุ่ม GameObject (ชื่อว่า Button ในตัวอย่างนี้) ลงในฉาก ซึ่งจะใช้เพื่อแสดงโฆษณาที่มีการให้รางวัล เราจะทําให้ปุ่มนี้พร้อมใช้งาน เมื่อมีโฆษณาที่มีการให้รางวัลเท่านั้น
ในเมธอด Start()
ให้เปลี่ยนสถานะที่ใช้งานอยู่ของปุ่มเป็น false
ซึ่งจะทําให้ปุ่มหายไปจากโหมด
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
เพิ่ม RewardedAdGameObject
ลงในฉากแล้วเลือกตําแหน่งโฆษณาโฆษณาที่มีการให้รางวัลของ AdMob สําหรับการสาธิตจากเมนูแบบเลื่อนลง
ในส่วนโค้ดเรียกกลับในเครื่องมือตรวจสอบ RewardedAdGameObject
ให้คลิกปุ่ม + จาก On Loaded() เพื่อให้มีการเรียกฟังก์ชันเมื่อโหลดโฆษณาที่มีการให้รางวัล
ลากและวางปุ่ม GameObject ที่คุณเพิ่มในขั้นตอนก่อนหน้าลงในช่องไม่มี (ออบเจ็กต์) เลือกฟังก์ชันที่จะเรียกใช้จากเมนูแบบเลื่อนลง
คลิกไม่มีฟังก์ชัน > GameObject > SetActive(bool) จากนั้นคลิกช่องทําเครื่องหมายเพื่อให้ส่ง true
เป็นพารามิเตอร์ (เรียก SetActive(true)
)
ในส่วนลิงก์กลับนี้ คุณยังลิงก์เหตุการณ์ที่จะเรียกใช้เมื่อเหตุการณ์ RewardedAd.OnUserEarnedReward
เริ่มทํางานได้อีกด้วย ดูรายละเอียดเพิ่มเติมได้ที่ส่วนนี้
จากนั้น ทําให้ปุ่มแสดงโฆษณาที่มีการให้รางวัลเมื่อคลิก จากส่วนเรียกกลับ OnClickClick ในเครื่องมือตรวจสอบปุ่ม ให้คลิกปุ่ม + และลากและวางเกม GameObject ที่มีการให้รางวัล (ตั้งชื่อว่าโฆษณาที่มีการให้รางวัลในตัวอย่างนี้) ลงในช่องไม่มี (ออบเจ็กต์)
จากนั้นแนบฟังก์ชัน RewardedAdGameObject.ShowIfLoaded()
กับปุ่มเรียกกลับ OnClick() ของปุ่ม
สุดท้าย อย่าลืมเริ่มต้น SDK ข้อมูลโค้ดต่อไปนี้เป็นโค้ดที่สมบูรณ์สําหรับโหมดที่ใช้ในตัวอย่างนี้
using UnityEngine;
using GoogleMobileAds.Api;
public class MainScene : MonoBehaviour
{
void Start()
{
GameObject.Find("Button").SetActive(false);
MobileAds.Initialize((initStatus) => {
Debug.Log("Initialized MobileAds");
});
}
}
เมื่อเรียกใช้โปรเจ็กต์แล้ว คุณจะเห็นปุ่มที่แสดงในฉากเมื่อโหลดโฆษณาที่มีการให้รางวัลและพร้อมที่จะแสดง
กําหนดค่าโค้ดเรียกกลับรางวัลสําหรับ RewardAdGameObject
ตัวอย่างวิธีกําหนดค่าโค้ดเรียกกลับที่มีการให้รางวัลลงในตําแหน่งโฆษณาที่มีการให้รางวัล คุณจะให้รางวัลแก่ผู้ใช้เมื่อมีการเรียกใช้ฟังก์ชันเรียกกลับได้
สร้างสคริปต์ใหม่และกําหนดฟังก์ชันที่ยอมรับ 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 ของตําแหน่งโฆษณา) ในฉาก ในตัวอย่างนี้ ระบบจะแนบไว้กับ
GameGameObject หลัก
เพิ่ม RewardedAdGameObject
ในฉาก จากนั้นในส่วน "โค้ดเรียกกลับ" ในเครื่องมือตรวจสอบของ RewardedAdGameObject
ให้คลิกปุ่ม + ในรางวัลที่ได้รับของผู้ใช้ (รางวัล) เพื่อเปิดใช้งานฟังก์ชันเมื่อมีการเรียกรางวัลแก่ผู้ใช้
ลากและวาง Game Camera GameObject หลักที่คุณเพิ่มในขั้นตอนก่อนหน้าลงในช่องไม่มี (ออบเจ็กต์) เลือกฟังก์ชันที่จะเรียกใช้จากเมนูแบบเลื่อนลง คลิกไม่มีฟังก์ชัน > RewardTestScript > OnUserReceiveedReward
เมื่อเรียกใช้โปรเจ็กต์และดูโฆษณาที่มีการให้รางวัล ระบบจะเรียกใช้ RewardedTestScript.OnUserEarnedReward()
เมื่อคุณได้รับรางวัลสําหรับการโต้ตอบกับโฆษณา