如何在Unity中使用Admob奖励视频来奖励玩家?

时间:2017-10-13 13:01:53

标签: c# unity3d admob

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using UnityEngine.UI;

public class AdManager : MonoBehaviour {

RewardBasedVideoAd rewardBasedVideo;

static InterstitialAd interstitial;

string VideoID = "ca-app-pub-3888784411212422/2850896103";
string adUnitId = "ca-app-pub-3888784411212422/4158795262";

public static AdManager Instance;
void Start ()
{
    Instance = this;
    DontDestroyOnLoad(gameObject);
    RequestRewardBasedVideo();
    RequestInterstitial();
}

public void RequestRewardBasedVideo()
{       
    rewardBasedVideo = RewardBasedVideoAd.Instance;
    rewardBasedVideo.LoadAd(new AdRequest.Builder().Build(), adUnitId);
}

public void RequestInterstitial()
{
    interstitial = new InterstitialAd(VideoID);
    interstitial.LoadAd(new AdRequest.Builder().Build());
}
public void ShowAd()
{
    if(rewardBasedVideo.IsLoaded())
    {
        rewardBasedVideo.Show();
        rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
    }
}
public static void ShowInter()
{
    showInterstitial(interstitial);
}


private void showAdd(RewardBasedVideoAd r)
{
    if (r.IsLoaded())
    {
        //Subscribe to Ad event
        r.Show();
        r.OnAdRewarded += HandleRewardBasedVideoRewarded;
    }
}

public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{

    PlayerPrefs.SetInt("coin", PlayerPrefs.GetInt("coin") + 200);
    GameObject.FindGameObjectWithTag("Coin").GetComponent<Text>().text = PlayerPrefs.GetInt("coin").ToString();
    GameObject.FindGameObjectWithTag("Double").GetComponent<Button>().interactable = false;

    Debug.Log("Pref: " + PlayerPrefs.GetInt("coin"));
}

static void showInterstitial(InterstitialAd i)
{
    if (i.IsLoaded())
    {
        i.Show();
    }
}
}

我用200个硬币奖励玩家,但不知怎的,每当我得到奖励增加200.第一次当玩家获得奖励时,他获得200,下次他获得400,下次600,等等。我试图改变代码很多方面,但没有积极的结果。

单击按钮时调用的方法是ShowAd()。每次当显示调用方法的按钮的面板时,我都会调用RequestRewardBasedVideo()。

1 个答案:

答案 0 :(得分:0)

添加和创建新对象就是答案, 例如,Void会有类似的东西

 public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        int CoinOld = PlayerPrefs.GetInt("coin");
        CoinOld += 200;
        PlayerPrefs.SetInt("coin", CoinOld);
        GameObject.FindGameObjectWithTag("Coin").GetComponent<Text>().text = PlayerPrefs.GetInt("coin").ToString();
        GameObject.FindGameObjectWithTag("Double").GetComponent<Button>().interactable = false;

        Debug.Log("Pref: " + PlayerPrefs.GetInt("coin"));
    }