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