对观看广告的玩家进行奖励可以增加用户参与度,从而带来更高收入。例如,游戏可以用游戏币, 消耗品, 额外生命数量或经验倍增法宝来奖励玩家。如需了解如何有效设计奖励广告的更多信息,请参阅有关变现策略的文档。
要奖励玩家看完视频广告,请使用 ShowResult
结果实现一个回调方法来检查用户是否看完广告并应该获得奖励。
奖励广告按钮
使用按钮提示玩家选择观看广告是奖励视频广告的常见实现方式。可使用以下步骤中的示例代码来创建奖励广告按钮。只要有可用的广告内容,就会在按下按钮时展示广告。
要在 Unity 编辑器中配置按钮,请执行以下操作:
- 选择 Game Object (游戏对象) > UI > Button (按钮),将按钮添加到您的场景。
- 选择添加到场景中的按钮,然后使用 Inspector 为其添加脚本组件 (选择 Add Component (添加组件) > New Script (新建脚本))。将脚本命名为
RewardedAdsButton
以便与类名匹配。 - 打开脚本,并添加以下代码:
using UnityEngine; using UnityEngine.UI; using UnityEngine.Advertisements; public class RewardedAdsButton : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener { [SerializeField] Button _showAdButton; [SerializeField] string _androidAdUnitId = "Rewarded_Android"; [SerializeField] string _iOSAdUnitId = "Rewarded_iOS"; string _adUnitId = null; // This will remain null for unsupported platforms void Awake() { // Get the Ad Unit ID for the current platform: #if UNITY_IOS _adUnitId = _iOSAdUnitId; #elif UNITY_ANDROID _adUnitId = _androidAdUnitId; #endif // Disable the button until the ad is ready to show: _showAdButton.interactable = false; } // Call this public method when you want to get an ad ready to show. public void LoadAd() { // IMPORTANT! Only load content AFTER initialization (in this example, initialization is handled in a different script). Debug.Log("Loading Ad: " + _adUnitId); Advertisement.Load(_adUnitId, this); } // If the ad successfully loads, add a listener to the button and enable it: public void OnUnityAdsAdLoaded(string adUnitId) { Debug.Log("Ad Loaded: " + adUnitId); if (adUnitId.Equals(_adUnitId)) { // Configure the button to call the ShowAd() method when clicked: _showAdButton.onClick.AddListener(ShowAd); // Enable the button for users to click: _showAdButton.interactable = true; } } // Implement a method to execute when the user clicks the button: public void ShowAd() { // Disable the button: _showAdButton.interactable = false; // Then show the ad: Advertisement.Show(_adUnitId, this); } // Implement the Show Listener's OnUnityAdsShowComplete callback method to determine if the user gets a reward: public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState) { if (adUnitId.Equals(_adUnitId) && showCompletionState.Equals(UnityAdsShowCompletionState.COMPLETED)) { Debug.Log("Unity Ads Rewarded Ad Completed"); // Grant a reward. } } // Implement Load and Show Listener error callbacks: public void OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message) { Debug.Log($"Error loading Ad Unit {adUnitId}: {error.ToString()} - {message}"); // Use the error details to determine whether to try to load another ad. } public void OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message) { Debug.Log($"Error showing Ad Unit {adUnitId}: {error.ToString()} - {message}"); // Use the error details to determine whether to try to load another ad. } public void OnUnityAdsShowStart(string adUnitId) { } public void OnUnityAdsShowClick(string adUnitId) { } void OnDestroy() { // Clean up the button listeners: _showAdButton.onClick.RemoveAllListeners(); } }
后续步骤:请参阅在 Unity 中实现横幅广告。