2017-10-26 2 views
0

Dieses Problem hat mich in letzter Zeit aufgefallen, nie zuvor bemerkt, offenbar habe ich admob belohnt Video in meinem Unity3D-Projekt verwendet.Unity Admob Video-Zuhörer nicht funktionieren nach dem Ändern der Szene

In meinem Projekt belohne ich den Benutzer auf Level Fail, wenn der Benutzer das Belohnungsvideo ansieht, wird eine Belohnung für Benutzer- und Szenenänderungen automatisch an die Levelauswahl vergeben. Wenn der Benutzer das Gameplay erneut startet und erneut fehlschlägt, wird das Video angesehen, aber nichts passiert.

Nach einigen Debugging fand ich die Zuhörer funktionierten nicht zum zweiten Mal die Spielszene geladen wurde.

Ich habe ein GamePlayManager Script, wo ich alle Funktionalitäten tue ..

public class GamePlayManager : MonoBehaviour { 
private RewardBasedVideoAd rewardBasedVideoAd; 

void Start() 
{ 
rewardBasedVideoAd = RewardBasedVideoAd.Instance; 
     RequestRewardBasedVideo(); 

     rewardBasedVideoAd.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad; 
     // has rewarded the user. 
     rewardBasedVideoAd.OnAdRewarded += HandleRewardBasedVideoRewarded; 
} 

private void RequestRewardBasedVideo() 
    { 

     #if UNITY_ANDROID 
     string adUnitId = GameConstants.AdmobRewardedVideoID; 
     #elif UNITY_IPHONE 
     string adUnitId = GameConstants.AdmobIOSRewardedVideoID; 
     #else 
     string adUnitId = "unexpected_platform"; 
     #endif 

     AdRequest request = new AdRequest.Builder().Build(); 
     rewardBasedVideoAd.LoadAd(request, adUnitId); 
    } 

    public void showAdmobRewardedVideo() 
    { 
     if (rewardBasedVideoAd.IsLoaded()) 
     { 
      rewardBasedVideoAd.Show(); 
     } 
    } 

    public void HandleRewardBasedVideoRewarded(object sender, Reward args) 
    { 

     Debug.Log ("Unity AdmobRewardGiven"); 

     nextLevel(); 
     gotoLevelSelection(); 

    } 


    public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args) 
    { 
     Debug.Log ("Admob RewardedVideo FailedToLoad"); 
    } 
} 

Antwort

0

Wenn Sie neue Szene laden GamePlayManager zerstört wird. Sie haben zwei Möglichkeiten:

.Add DontDestroyOnLoad(gameObject); an die Start Funktion, so dass das GamePlayManager Skript nicht zerstört wird, wenn neue Szene geladen wird.

.Unsubscribe auf die Ereignisse in der OnDestroy Funktion mit -= genau wie Sie mit += abonnieren. Ich sehe die Admob-Beispiele nicht dabei, aber Sie sollten immer von Ihren Ereignissen abmelden.

public void OnDestroy() 
{ 
    rewardBasedVideoAd.OnAdFailedToLoad -= HandleRewardBasedVideoFailedToLoad; 

    rewardBasedVideoAd.OnAdRewarded -= HandleRewardBasedVideoRewarded; 
} 

Alle diese sollten Ihr Problem beheben. Wenn ein Fehler auftritt, verwenden Sie den anderen.

Verwandte Themen