2016-04-19 10 views
0

Ich habe Unity Ads Android-Bibliothek in mein Android-Projekt integriert. Zu Beginn, nach initUnity Ads Android Integration - Reloading Video Ad-Problem

UnityAds.init(this, Consts.UNITY_GAME_ID, this); 

onFetchCompleted Methode meiner Rückruf ruft genannt, und ich kann Video zeigen und Rückruf erhalten über die Fertigstellung auf meine Tätigkeit.

Ich möchte Video nach der Fertigstellung neu laden und auf der UnityAds-Klasse nach einer Methode wie "neu laden", "holen" usw. suchen. Es scheint, als ob es keine Möglichkeit gibt, dies zu tun.

Also habe ich versucht, UnityAds.init erneut aufzurufen, konnte aber keinen Rückruf oder Fehler in den Protokollen erhalten.

Wie kann ich eine andere Videoanzeige erneut laden?

+0

Was meinst du mit Video nach der Fertigstellung neu zu laden. Du meinst ein anderes Video nach einem anderen Video nach einem anderen Video? – Programmer

+0

Ja, ich möchte ein anderes Video laden und dem Benutzer zeigen. –

Antwort

0

. Sie rufen init nicht zweimal auf.

. Wahrscheinlich verwenden Sie nicht isReady, um zu prüfen, ob die Anzeige gelesen wird, bevor sie die Funktion Advertisement.Show() aufruft.

Kopiert kopiert direkt von der Unity-Website, der folgende Code sollte Anzeige zeigen und warten Um eine andere Anzeige anzuzeigen, rufen Sie einfach erneut ShowAd().

[SerializeField] string gameID = "33675"; 

void Awake() 
{ 
    Advertisement.Initialize (gameID, true); 
} 

void Start() 
{ 
    ShowAd();//Show ad 
} 

public void ShowAd(string zone = "") 
{ 
    #if UNITY_EDITOR 
     StartCoroutine(WaitForAd()); 
    #endif 

    if (string.Equals (zone, "")) 
     zone = null; 

    ShowOptions options = new ShowOptions(); 
    options.resultCallback = AdCallbackhandler; 

    if (Advertisement.isReady (zone)) 
     Advertisement.Show (zone, options); 
} 

void AdCallbackhandler (ShowResult result) 
{ 
    switch(result) 
    { 
    case ShowResult.Finished: 
     Debug.Log ("Ad Finished. Rewarding player..."); 
     break; 
    case ShowResult.Skipped: 
     Debug.Log ("Ad skipped. Son, I am dissapointed in you"); 
     break; 
    case ShowResult.Failed: 
     Debug.Log("I swear this has never happened to me before"); 
     break; 
    } 
} 

IEnumerator WaitForAd() 
{ 
    float currentTimeScale = Time.timeScale; 
    Time.timeScale = 0f; 
    yield return null; 

    while (Advertisement.isShowing) 
     yield return null; 

    Time.timeScale = currentTimeScale; 
} 
+0

Danke für die Antwort, aber dies ist für Unity SDK, ich verwende Android SDK Unity-Anzeigen. Ich überprüfe auch UnityAds.canShow() nach Abschluss eines Videos, aber es ist falsch, was bedeutet, dass ich UnityAds.show() nicht erneut direkt aufrufen kann. –

+0

?? Ich weiß, dass dies für Unity SDK ist. Der obige Code gilt für das Unity Ad SDK. Der obige Code sollte es tun. Ändern Sie einfach 'gameID' zu Ihrer' gameId' und rufen Sie 'ShowAd()' jedes Mal auf, wenn Sie eine Anzeige schalten möchten. Der obige Code implementiert Methoden zum Warten auf das Laden der Anzeige vor dem Anzeigen. Bitte versuchen Sie es, bevor Sie weitere Kommentare abgeben. – Programmer

+0

Du hast mich nicht richtig verstanden! Mein Projekt ist kein Unity-Projekt, sondern ein natives Android-Projekt. Daher ist dein Codebeispiel für mich nicht verwendbar. –