คู่มือนี้แสดงวิธีใช้ฟีเจอร์ Ad Placements ของปลั๊กอิน Unity สำหรับโฆษณาในอุปกรณ์เคลื่อนที่ของ Google เพื่อสร้างและแสดงโฆษณาสำหรับแอป
ข้อกำหนดเบื้องต้น
Unity 2017.4 ขึ้นไป
ดาวน์โหลด และนำเข้าบิลด์ช่วงแรกของปลั๊กอิน GMA Unity
ตั้งรหัสแอป AdMob ใน Unity Editor
เริ่มต้น Google Mobile Ads SDK
ก่อนที่จะโหลดโฆษณา ให้เริ่มต้น SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google โดยการเรียกใช้
MobileAds.Initialize()
พร้อมด้วยแฮนเดิล Action<InitializationStatus>
คุณต้องทำขั้นตอนนี้เพียงครั้งเดียว ซึ่งควรทำเมื่อเปิดตัวแอป
using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
...
public void Start()
{
// Initialize Google Mobile Ads SDK.
MobileAds.Initialize((initStatus) =>
{
// SDK initialization is complete
});
...
}
}
การสร้างตำแหน่งโฆษณา
ขั้นตอนแรกในการแสดงแบนเนอร์ด้วยโฆษณาในอุปกรณ์เคลื่อนที่ของ Google คือการสร้างและ กำหนดค่าตําแหน่งโฆษณา คุณเลือกตําแหน่งโฆษณาเป็นรูปแบบแบนเนอร์ โฆษณาคั่นระหว่างหน้า หรือโฆษณาที่มีการให้รางวัลได้จากชิ้นงาน > โฆษณา Google ในอุปกรณ์เคลื่อนที่ > ตําแหน่งโฆษณาใน Unity Editor จากนั้นระบบจะตั้งค่าตำแหน่งโฆษณาเดโม 3 ตำแหน่งและพร้อมใช้งาน
หากต้องการเพิ่มตําแหน่งโฆษณาใหม่ ให้คลิกปุ่มเพิ่มตําแหน่งใหม่ที่ท้ายรายการ คุณกำหนดค่าตำแหน่งโฆษณาได้จากมุมมองเครื่องมือตรวจสอบ
การกำหนดค่าตำแหน่งโฆษณา
ตําแหน่งโฆษณาแต่ละรายการมีพร็อพเพอร์ตี้ต่อไปนี้
- ชื่อตำแหน่ง
- ชื่อของตำแหน่ง ใช้เพื่อระบุตําแหน่งเมื่อตั้งค่าโฆษณาใน ฉาก
- รูปแบบโฆษณา
- แบนเนอร์ โฆษณาที่มีการให้รางวัล โฆษณาคั่นระหว่างหน้า ประเภทของโฆษณา
- รหัสหน่วยโฆษณา
- ระบุรหัสหน่วยโฆษณาแบนเนอร์สำหรับ Android และ iOS คุณต้องระบุรหัสหน่วยโฆษณาอย่างน้อย 1 รายการ
- คงอยู่ตลอดฉาก
- เมื่อเลือกแล้ว แบนเนอร์จะยังคงอยู่บนหน้าจอไม่ว่าฉากจะเปลี่ยนไปอย่างไรก็ตาม (ลักษณะการทำงานเหมือนกับ
DontDestroyOnLoad
) - เปิดใช้การโหลดอัตโนมัติแล้ว
- เมื่อเลือกตัวเลือกนี้ ระบบจะโหลดโฆษณาโดยอัตโนมัติเมื่อโหลดฉากที่เชื่อมโยงกับ ตำแหน่งโฆษณา
ภาพหน้าจอด้านล่างแสดงตัวอย่างตําแหน่งโฆษณาชื่อ แบนเนอร์สุดเจ๋งของฉัน
การเพิ่ม AdGameObject ลงในฉาก
คุณสามารถเพิ่ม AdGameObject สำหรับรูปแบบแบนเนอร์ โฆษณาคั่นระหว่างหน้า หรือโฆษณาที่มีการให้รางวัลลงใน ฉากได้โดยใช้ GameObject > Google Mobile Ads ใน Unity Editor เลือก รูปแบบเพื่อเพิ่มตําแหน่งลงในฉากที่ใช้งานอยู่
เมื่อเพิ่ม AdGameObject ลงในฉากแล้ว คุณจะเห็น GameObject ที่แสดงโฆษณาในมุมมอง Hierarchy ของ Unity Editor
คุณเปลี่ยนชื่อตำแหน่งโฆษณาได้โดยเปลี่ยนชื่อ GameObject เอง ภาพหน้าจอต่อไปนี้แสดงตัวอย่าง AdGameObject ที่ชื่อว่าโฆษณาแบนเนอร์
การตั้งค่า AdGameObject
คุณกำหนดค่า AdGameObject ในฉากได้จากมุมมอง Inspector ในการตั้งค่าสำหรับคอมโพเนนต์ Ad Game Object (สคริปต์)
- ตำแหน่งโฆษณา
เลือกตําแหน่งโฆษณาจากรายการแบบเลื่อนลงของตําแหน่งที่กําหนดค่า รายการจะมีเฉพาะหน่วยโฆษณาสำหรับรูปแบบที่ถูกต้องเท่านั้น เช่น สำหรับออบเจ็กต์เกมโฆษณาแบนเนอร์ เมนูแบบเลื่อนลงจะแสดงเฉพาะตำแหน่งโฆษณาแบนเนอร์ที่กำหนดค่าไว้เท่านั้น
- การกำหนดค่า
BannerAdGameObject
(แบนเนอร์เท่านั้น)
- ขนาด - เลือกขนาดแบนเนอร์ที่ต้องการใช้
- แบนเนอร์แบบปรับขนาดได้ที่ตรึงไว้มีตัวเลือกเพิ่มเติมดังนี้
- การวางแนว - เลือกการวางแนวอุปกรณ์ที่ใช้คำนวณความสูงของโฆษณา
- ใช้ความกว้างแบบเต็มหน้าจอ - เมื่อเลือกแล้ว แบนเนอร์จะใช้ ความกว้างแบบเต็มหน้าจอ คุณปรับความกว้างของหน้าจอเป็น % (50~99%) ได้หาก ยกเลิกการเลือกตัวเลือกใช้ความกว้างแบบเต็มหน้าจอ
- กำหนดเองช่วยให้คุณระบุความกว้างและความสูงของแบนเนอร์ได้
- แบนเนอร์แบบปรับขนาดได้ที่ตรึงไว้มีตัวเลือกเพิ่มเติมดังนี้
- ตําแหน่งโฆษณา - เลือกตําแหน่งที่ควรวางแบนเนอร์
การติดต่อกลับ
คุณสามารถใช้ฟังก์ชันที่สอดคล้องกับการเรียกกลับของโฆษณาได้ เช่น หาก คุณต้องการจัดการเมื่อโฆษณาแบนเนอร์โหลดไม่สำเร็จ ให้ทำดังนี้
สร้างฟังก์ชันที่ใช้ได้กับ Callback ของโฆษณา
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 Demo Rewarded
Ad จากเมนูแบบเลื่อนลง
ในส่วน Callback ในRewardedAdGameObject
เครื่องมือตรวจสอบ ให้คลิกปุ่ม + จาก On Ad Loaded() เพื่อเปิดใช้ฟังก์ชันที่จะเรียกใช้
เมื่อโหลดโฆษณาที่มีการให้รางวัล
ลากและวาง GameObject ของปุ่มที่คุณเพิ่มในขั้นตอนก่อนหน้าไปยังฟิลด์ไม่มี (ออบเจ็กต์) เลือกฟังก์ชันที่จะเรียกใช้จากเมนูแบบเลื่อนลง
คลิกไม่มีฟังก์ชัน > GameObject > SetActive(bool) แล้วคลิกช่องทําเครื่องหมายเพื่อให้ระบบส่ง true
เป็นพารามิเตอร์ (เรียกใช้ SetActive(true)
)
ในส่วนการเรียกกลับนี้ คุณยังลิงก์เหตุการณ์ที่จะเรียกใช้ได้
เมื่อมีการทริกเกอร์RewardedAd.OnUserEarnedReward
event ดูรายละเอียดเพิ่มเติมได้ที่ส่วนนี้
จากนั้นสร้างปุ่มเพื่อแสดงโฆษณาที่มีการให้รางวัลเมื่อมีการคลิก จากส่วนการเรียกกลับ On Click() ในเครื่องมือตรวจสอบปุ่ม ให้คลิกปุ่ม + แล้วลากและวาง GameObject ตําแหน่งโฆษณาที่มีการให้รางวัล (ชื่อ Rewarded Ad ในตัวอย่างนี้) ลงในช่อง None (Object)
จากนั้นแนบฟังก์ชัน 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");
});
}
}
เมื่อเรียกใช้โปรเจ็กต์แล้ว คุณจะเห็นปุ่มแสดงในฉากเมื่อโหลดโฆษณาที่มีการให้รางวัลและพร้อมแสดง
กำหนดค่าการเรียกกลับของรางวัลสำหรับ RewardedAdGameObject
ต่อไปนี้เป็นตัวอย่างวิธีกำหนดค่า Callback ที่มีรางวัลไปยังตำแหน่งโฆษณาที่มีการให้รางวัล เพื่อให้คุณมอบรางวัลแก่ผู้ใช้ได้เมื่อมีการเรียกใช้ฟังก์ชัน Callback
สร้างสคริปต์ใหม่และกําหนดฟังก์ชันที่รับ 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 ของ Ad
Placement) ในฉาก ในตัวอย่างนี้ จะแนบไว้กับ GameObject ของ Main
Camera
เพิ่ม RewardedAdGameObject
ลงในฉาก จากนั้นในส่วน Callbacks
ในRewardedAdGameObject
เครื่องมือตรวจสอบ ให้คลิกปุ่ม + ใน On User
Earned Reward (Reward) เพื่อเปิดใช้ฟังก์ชันที่จะเรียกใช้เมื่อมีการ
ให้รางวัลแก่ผู้ใช้
ลากและวาง GameObject ของกล้องหลักที่คุณเพิ่มในขั้นตอนก่อนหน้า ลงในช่องไม่มี (ออบเจ็กต์) เลือกฟังก์ชันที่จะเรียกใช้จากเมนูแบบเลื่อนลง คลิก No Function > RewardedTestScript > OnUserEarnedReward
เมื่อคุณเรียกใช้โปรเจ็กต์และดูโฆษณาที่มีการให้รางวัล
RewardedTestScript.OnUserEarnedReward()
จะเรียกใช้เมื่อคุณได้รับ
รางวัลจากการโต้ตอบกับโฆษณา