คู่มือนี้จะแสดงวิธีใช้ฟีเจอร์ตำแหน่งโฆษณาของปลั๊กอิน 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 ใน Unity Editor เลือกรูปแบบ เพื่อเพิ่มตำแหน่งลงในฉากที่ใช้งานอยู่
เมื่อเพิ่ม AdGameObject ลงในฉากแล้ว คุณจะเห็น GameObject ที่นําเสนอโฆษณาดังกล่าวในมุมมองลําดับชั้นของ Unity Editor
คุณเปลี่ยนชื่อตำแหน่งได้โดยเปลี่ยนชื่อของ GameObject เอง ภาพหน้าจอต่อไปนี้แสดงตัวอย่างของ AdGameObject ที่ชื่อว่าโฆษณาแบนเนอร์
การตั้งค่า AdGameObject
คุณกำหนดค่า AdGameObject ในฉากได้จากมุมมองเครื่องมือตรวจสอบในการตั้งค่าสำหรับคอมโพเนนต์ออบเจ็กต์เกมโฆษณา (สคริปต์)
- ตำแหน่งโฆษณา
เลือกตำแหน่งโฆษณาจากรายการแบบเลื่อนลงของตำแหน่งที่กำหนดค่าไว้ รายการจะมีเฉพาะหน่วยโฆษณาสำหรับรูปแบบที่ถูกต้อง เช่น สำหรับออบเจ็กต์เกมโฆษณาแบนเนอร์ เมนูแบบเลื่อนลงจะแสดงเฉพาะตำแหน่งโฆษณาแบนเนอร์ที่กำหนดค่าไว้เท่านั้น
- การกำหนดค่า
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 คุณจะรับอินสแตนซ์ของ URL ได้ดังนี้
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();
});
}
...
}
จัดการสถานะของปุ่ม "ดูโฆษณาที่มีการให้รางวัล"
ต่อไปนี้เป็นตัวอย่างวิธีเปิดใช้ปุ่ม "ดูโฆษณาที่มีการให้รางวัล" โดยใช้ตำแหน่งโฆษณา
เพิ่ม Button GameObject (ชื่อ Button ในตัวอย่างนี้) ลงในฉาก ซึ่งจะใช้เพื่อแสดงโฆษณาที่มีการให้รางวัล เราจะทำให้ปุ่มนี้ใช้ได้เฉพาะเมื่อมี โฆษณาที่มีการให้รางวัลเท่านั้น
ในเมธอด Start()
ให้เปลี่ยนสถานะที่ใช้งานอยู่ของปุ่มเป็น false
วิธีนี้จะทำให้ปุ่มหายไปจากฉาก
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
เพิ่ม RewardedAdGameObject
ลงในฉาก แล้วเลือกตำแหน่งโฆษณาโฆษณาที่มีการให้รางวัลของ AdMob ที่มีการให้รางวัลจากเมนูแบบเลื่อนลง
ในส่วนโค้ดเรียกกลับในเครื่องมือตรวจสอบ RewardedAdGameObject
ให้คลิกปุ่ม + จาก On Ad Loaded() เพื่อเปิดใช้ฟังก์ชันที่เรียกใช้เมื่อโหลดโฆษณาที่มีการให้รางวัล
ลากและวางปุ่ม GameObject ที่เพิ่มไว้ในขั้นตอนก่อนหน้าลงในช่อง None (Object) เลือกฟังก์ชันที่จะเรียกใช้จากเมนูแบบเลื่อนลง
คลิก No Function > GameObject > SetActive(bool) แล้วคลิกที่ช่องทำเครื่องหมายเพื่อให้ส่ง true
เป็นพารามิเตอร์ (การเรียก SetActive(true)
)
ในส่วนโค้ดเรียกกลับนี้ คุณยังลิงก์เหตุการณ์ที่จะเรียกเมื่อเหตุการณ์ RewardedAd.OnUserEarnedReward
เริ่มทำงานได้ด้วย ดูรายละเอียดเพิ่มเติมได้ที่ส่วนนี้
ต่อไป สร้างปุ่มเพื่อแสดงโฆษณาที่มีการให้รางวัลเมื่อคลิก จากส่วน On Click() ในเครื่องมือตรวจสอบปุ่ม ให้คลิกปุ่ม + จากนั้นลากและวาง 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");
});
}
}
เมื่อเรียกใช้โปรเจ็กต์ คุณจะเห็นปุ่มแสดงในฉากเมื่อโฆษณาที่มีการให้รางวัลโหลดขึ้นและพร้อมแสดง
กำหนดค่าโค้ดเรียกกลับสำหรับรางวัลสำหรับ RewardedAdGameObject
ด้านล่างนี้เป็นตัวอย่างวิธีกำหนดค่าโค้ดเรียกกลับที่มีการให้รางวัลให้เป็นตำแหน่งโฆษณาที่มีการให้รางวัล เพื่อให้คุณให้รางวัลแก่ผู้ใช้เมื่อมีการเรียกใช้ฟังก์ชันเรียกกลับ
สร้างสคริปต์ใหม่และกำหนดฟังก์ชันที่ยอมรับ 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 ใดก็ได้ (ยกเว้น Ad Placement GameObject) ในฉาก ในตัวอย่างนี้ พารามิเตอร์แนบอยู่กับ GameObject หลักในกล้อง
เพิ่ม RewardedAdGameObject
ลงในฉาก จากนั้นในส่วนโค้ดเรียกกลับในเครื่องมือตรวจสอบ RewardedAdGameObject
ให้คลิกปุ่ม + ที่รางวัลสำหรับผู้ใช้ที่ได้รับ (รางวัล) เพื่อเปิดใช้ฟังก์ชันสำหรับเรียกใช้ฟังก์ชันเมื่อมีการมอบรางวัลให้กับผู้ใช้
ลากและวาง GameObject กล้องหลักที่คุณเพิ่มไว้ในขั้นตอนก่อนหน้าลงในช่อง None (Object) เลือกฟังก์ชันที่จะเรียกจากเมนูแบบเลื่อนลง คลิกไม่มีฟังก์ชัน > RewardedTestScript > OnUserReceiveedReward
เมื่อคุณเรียกใช้โปรเจ็กต์และดูโฆษณาที่มีการให้รางวัล ระบบจะเรียกใช้ RewardedTestScript.OnUserEarnedReward()
เมื่อคุณได้รับรางวัลจากการโต้ตอบกับโฆษณา