只召唤一次admob

时间:2015-02-13 11:40:37

标签: c# unity3d admob

即时通讯让我感到很困难,因为玩家在游戏中死亡后,广告正在运行并显示,但如果你连续多次死亡很快,游戏就会崩溃,我怀疑它与请求广告有关快点。

申请广告:

private const string AD_UNIT_ID = "hidden_for_privacy";
private AdMobPlugin admob;

void Start () {


    admob = GetComponent<AdMobPlugin> ();
    admob.CreateBanner (AD_UNIT_ID, AdMobPlugin.AdSize.SMART_BANNER, true);
    admob.RequestAd ();
    admob.HideBanner ();

    print ("loaded");
}

如果你死了,广告将通过

显示
    public void showAds(){   print ("showing ads");  admob.ShowBanner();  } 

然后出现一个gui,当你点击该级别重新加载的按钮时,整个脚本和启动函数也会出现,因此会发出另一个请求。

void OnGUI() {
    if (show) {
                    GUI.Box (new Rect (0, 0, Screen.width, Screen.height), "");


                        if (GUI.Button(new Rect(100, 150, 600, 300), "Play again")){
                            Application.LoadLevel("level1");
                            show = false;
                            hideAds();                                                                                 }                    
}

问题在于,每次玩家死亡时,这个启动功能都会被反复调用(正如我之前所述,如果快速完成游戏会导致游戏速度变慢并崩溃),当然我应该只能请求广告一次每个“会话”,然后在该会话期间随意隐藏/显示广告。如此频繁地请求广告似乎很重要。

此致 埃米尔

1 个答案:

答案 0 :(得分:1)

完全控制您的广告。请不要在每次开始时提出要求。为此,您可以使用DontDestroyOnLoad()。当场景发生变化时,它不会被破坏并重新开始。还要检查是否有重复项。长话短说 -

private static bool created = false;
.....
void Start () {
    admob = GetComponent<AdMobPlugin> ();
    admob.CreateBanner (AD_UNIT_ID, AdMobPlugin.AdSize.SMART_BANNER, true);
    admob.RequestAd ();
    admob.HideBanner ();
    print ("loaded");
}

void Awake(){
    if(!created){
        DontDestroyOnLoad(gameObject);
        created = true;
    } else {
        Destroy(gameObject);
    }
}

使用计时器功能(您的会话),以便在基本的一段时间后,如果玩家死亡,您可以通过代码显示广告。如果玩家早先死亡,请不要请求广告。希望它有所帮助。