即时通讯让我感到很困难,因为玩家在游戏中死亡后,广告正在运行并显示,但如果你连续多次死亡很快,游戏就会崩溃,我怀疑它与请求广告有关快点。
申请广告:
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(); }
}
问题在于,每次玩家死亡时,这个启动功能都会被反复调用(正如我之前所述,如果快速完成游戏会导致游戏速度变慢并崩溃),当然我应该只能请求广告一次每个“会话”,然后在该会话期间随意隐藏/显示广告。如此频繁地请求广告似乎很重要。
此致 埃米尔
答案 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);
}
}
使用计时器功能(您的会话),以便在基本的一段时间后,如果玩家死亡,您可以通过代码显示广告。如果玩家早先死亡,请不要请求广告。希望它有所帮助。