คู่มือนี้แสดงวิธีใช้โฆษณาของปลั๊กอิน Unity สำหรับโฆษณาบนอุปกรณ์เคลื่อนที่ของ Google ฟีเจอร์ตำแหน่งโฆษณาสำหรับสร้างและแสดงโฆษณาสำหรับแอป
ข้อกำหนดเบื้องต้น
Unity 2017.4 ขึ้นไป
ดาวน์โหลด และนำเข้าปลั๊กอิน GMA Unity ก่อนเปิดตัว
ตั้งค่ารหัสแอป AdMob ใน ตัวแก้ไข Unity
เริ่มต้น SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ 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 ตำแหน่งจะ การตั้งค่าและพร้อมใช้งาน
หากต้องการเพิ่มตำแหน่งโฆษณาใหม่ คลิกปุ่มเพิ่มตำแหน่งใหม่ที่ส่วนท้ายของ รายการ คุณสามารถกำหนดค่าตำแหน่งโฆษณาจากมุมมองตัวตรวจสอบได้
การกำหนดค่าตำแหน่งโฆษณา
แต่ละตำแหน่งจะมีพร็อพเพอร์ตี้ดังต่อไปนี้
- ชื่อตำแหน่ง
- ชื่อของตำแหน่งโฆษณา ใช้ระบุตำแหน่งเมื่อตั้งค่าโฆษณาใน ฉาก
- รูปแบบโฆษณา
- แบนเนอร์, โฆษณาที่มีการให้รางวัล, โฆษณาคั่นระหว่างหน้า ประเภทโฆษณา
- รหัสหน่วยโฆษณา
- ระบุรหัสหน่วยโฆษณาแบนเนอร์สำหรับ Android และ iOS คุณต้องระบุที่ รหัสหน่วยโฆษณาอย่างน้อย 1 รหัส
- ต่อเนื่องทั่วทุกฉาก
- เมื่อเลือกตัวเลือกนี้ แบนเนอร์จะยังคงอยู่บนหน้าจอโดยไม่คำนึงถึงฉาก
(ลักษณะการทำงานเดียวกับ
DontDestroyOnLoad
) - การโหลดอัตโนมัติเปิดใช้งาน
- เมื่อเลือกตัวเลือกนี้ โฆษณาจะโหลดโดยอัตโนมัติเมื่อฉากที่เชื่อมโยงกับฉาก ระบบจะโหลดตำแหน่งโฆษณา
ภาพหน้าจอต่อไปนี้แสดงตัวอย่างตำแหน่งโฆษณาชื่อ แบนเนอร์สุดปัง
การเพิ่ม AdGameObject ลงในโหมด
คุณสามารถเพิ่ม AdGameObject สำหรับโฆษณาแบนเนอร์ โฆษณาคั่นระหว่างหน้า หรือโฆษณาที่มีการให้รางวัลลงใน โดยใช้ GameObject > Google Mobile Ads ใน Unity Editor เลือก เพื่อเพิ่มตำแหน่งลงในฉากที่ใช้งานอยู่
เมื่อเพิ่ม AdGameObject ลงในฉากแล้ว คุณจะเห็น GameObject จะแสดงโฆษณาในมุมมองแบบลำดับชั้นของ Unity Editor
คุณเปลี่ยนชื่อตำแหน่งโฆษณาได้โดยเปลี่ยนชื่อ GameObject โดยตรง ภาพหน้าจอต่อไปนี้แสดงตัวอย่างของ AdGameObject ชื่อว่าโฆษณาแบนเนอร์
การตั้งค่า AdGameObject
คุณกำหนดค่า AdGameObject ในโหมดของคุณได้จากเครื่องมือตรวจสอบ ในการตั้งค่าสำหรับคอมโพเนนต์ออบเจ็กต์เกมโฆษณา (สคริปต์)
- ตำแหน่งโฆษณา
เลือกตำแหน่งโฆษณาจากรายการแบบเลื่อนลงของตำแหน่งที่กำหนดค่าไว้ จะมีเฉพาะหน่วยโฆษณาสำหรับรูปแบบที่ถูกต้อง เช่น สำหรับโฆษณาแบนเนอร์ ออบเจ็กต์เกมที่เมนูแบบเลื่อนลงจะแสดงเฉพาะตำแหน่งโฆษณาแบนเนอร์ที่กำหนดค่าไว้เท่านั้น
- การกำหนดค่า
BannerAdGameObject
(แบนเนอร์เท่านั้น)
- ขนาด - เลือกขนาดของแบนเนอร์ที่ต้องการใช้
- แบนเนอร์แบบปรับขนาดได้แบบโฆษณา Anchor จะมีตัวเลือกเพิ่มเติมดังนี้
- การวางแนว - เลือกการวางแนวของอุปกรณ์ที่ใช้ในการคำนวณโฆษณา และความสูง
- ใช้ความกว้างเต็มหน้าจอ - เมื่อเลือกตัวเลือกนี้ แบนเนอร์จะยึดตำแหน่ง เต็มความกว้างของหน้าจอ คุณสามารถปรับ % ความกว้างของหน้าจอ (50~99%) ในกรณีต่อไปนี้ คุณยกเลิกการเลือกตัวเลือกใช้ความกว้างเต็มหน้าจอ
- กําหนดเองช่วยให้คุณระบุความกว้างและความสูงของแบนเนอร์ได้
- แบนเนอร์แบบปรับขนาดได้แบบโฆษณา Anchor จะมีตัวเลือกเพิ่มเติมดังนี้
- อันดับโฆษณา - เลือกตำแหน่งที่ควรวางแบนเนอร์
Callback
คุณสามารถใช้ฟังก์ชันที่สอดคล้องกับการเรียกกลับของโฆษณา ตัวอย่างเช่น หาก ที่คุณต้องการจัดการเมื่อโฆษณาแบนเนอร์โหลดไม่สำเร็จ
สร้างฟังก์ชันที่เข้ากันได้กับ Callback ของโฆษณา
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
แนบสคริปต์ที่มีฟังก์ชันข้างต้นกับ GameObject ในองค์ประกอบ ด้วย
คลิกปุ่ม + จากนั้นลากและ วาง GameObject ที่คุณแนบ สคริปต์
เลือกฟังก์ชันที่คุณต้องการลิงก์กับการเรียกกลับของโฆษณา สำหรับ Callback ของโฆษณาที่เป็นพารามิเตอร์ ให้เลือกฟังก์ชันเพื่อยอมรับ ตัวแปรเพื่อให้คุณสามารถรับค่าพารามิเตอร์จาก 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 แล้วโดยใช้วิธีต่อไปนี้ โปรดทราบว่าการตั้งค่า Auto Load ใน 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 ที่มีการให้รางวัล
โฆษณา ตำแหน่งโฆษณาจากเมนูแบบเลื่อนลง
ในส่วน Callback ในเครื่องมือตรวจสอบ RewardedAdGameObject
ให้คลิก
ปุ่ม + จาก On Ad Loaded() เพื่อเปิดใช้การเรียกใช้ฟังก์ชัน
เมื่อโฆษณาที่มีการให้รางวัลโหลด
ลากและวางปุ่ม GameObject ที่คุณเพิ่มไว้ในขั้นตอนก่อนหน้าลงใน
ช่องไม่มี (ออบเจ็กต์) เลือกฟังก์ชันที่จะเรียกใช้จากเมนูแบบเลื่อนลง
คลิกไม่มีฟังก์ชัน > GameObject >
SetActive(bool) แล้วคลิกช่องทำเครื่องหมายเพื่อ
ระบบจะส่ง true
เป็นพารามิเตอร์ (เรียกใช้ SetActive(true)
)
ในส่วน Callback นี้ คุณยังลิงก์เหตุการณ์ที่ระบบจะเรียก
เมื่อเหตุการณ์ RewardedAd.OnUserEarnedReward
เริ่มทำงาน สำหรับรายละเอียดเพิ่มเติม
โปรดดูส่วนนี้
ถัดไป ให้สร้างปุ่มเพื่อแสดงโฆษณาที่มีการให้รางวัลเมื่อคลิก จากแท็บ เปิด Click() ส่วน Callback ในเครื่องมือตรวจสอบปุ่ม ให้คลิกปุ่ม + และ ลากและวางโฆษณาที่มีการให้รางวัล GameObject (เรียกว่า โฆษณาที่มีการให้รางวัล ใน ตัวอย่าง) ลงในช่อง None (Object)
จากนั้นแนบฟังก์ชัน RewardedAdGameObject.ShowIfLoaded()
เข้ากับแท็ก
On Click() Callback
สุดท้ายนี้ อย่าลืมเริ่มต้น 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
ต่อไปนี้คือตัวอย่างวิธีกำหนดค่าการเรียกกลับที่มีการให้รางวัลไปยังโฆษณาที่มีการให้รางวัล ตำแหน่งเพื่อให้คุณสามารถให้รางวัลแก่ผู้ใช้เมื่อฟังก์ชัน 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) ในฉาก ในตัวอย่างนี้ เชื่อมโยงกับ
Camera GameObject
เพิ่ม RewardedAdGameObject
ลงในฉาก จากนั้น ในส่วน Callback
ในเครื่องมือตรวจสอบ RewardedAdGameObject
ให้คลิกปุ่ม + ในผู้ใช้
รางวัลที่ได้รับ (รางวัล) เพื่อให้ระบบเรียกฟังก์ชันเมื่อรางวัลคือ
ที่ให้แก่ผู้ใช้
ลากและวาง GameObject ของกล้องหลักที่คุณได้เพิ่มไว้ในก่อนหน้านี้ ไปที่ช่องไม่มี (ออบเจ็กต์) เลือกฟังก์ชันที่จะเรียกใช้จาก แบบเลื่อนลง คลิกไม่มีฟังก์ชัน > มีการให้รางวัลทดสอบสคริปต์ > รางวัลที่ผู้ใช้ได้รับ
เมื่อคุณเรียกใช้โปรเจ็กต์และดูโฆษณาที่มีการให้รางวัล
ระบบจะเรียกใช้ RewardedTestScript.OnUserEarnedReward()
เมื่อคุณจะ
ได้รับรางวัลจากการโต้ตอบกับโฆษณา