2015-07-03 2 views
1

Я пытаюсь показать межстраничную рекламу в приложении для Android, когда пользователи предпочитают воспроизводить текущую сцену в моей игре Unity3d. Моя первая попытка сделать это произвела мерцание тестовой рекламы в редакторе, но ничего не смогла произвести на самом устройстве.Показывает объявления Unity3d, за которыми следует Application.LoadLevel (Application.loadedLevel);

Вот код, который я использовал (только соответствующий код включен):

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 
using UnityEngine.Advertisements; 

public class GameController : MonoBehaviour 
{ 

    ... 

    void Awake() 
     { 
      Advertisement.Initialize("Game ID omitted"); 
     } 

    ... 

    public void ShowAd() 
    { 
     // If ready, show an advertisement 
     if (Advertisement.IsReady()) 
     { 
      Advertisement.Show(); 
     } 
    } 

    public void Replay() 
    { 
     ShowAd(); 

     Application.LoadLevel (Application.loadedLevel); 
    } 

Я думал, что это может иметь что-то делать с Application.LoadLevel (Application.loadedLevel); после ShowAd();, поэтому я создал новую тестовую кнопку, чтобы попытаться изолировать проблему :

public void ShowAd() 
{ 
    // If ready, show an advertisement 
    if (Advertisement.IsReady()) 
    { 
     Advertisement.Show(); 
    } 
} 

public void TestAdButton() 
{ 
    ShowAd(); 
} 

Это объявление покажет правильно; однако я хотел бы реализовать объявление после щелчка кнопки воспроизведения (который затем должен вызвать повтор текущей сцены). Меня еще больше смущают сотрудники Unity, заявляя, что show an add will automatically pause the game.

Что я здесь делаю неправильно?

ответ

1

Ошибка, которую я вижу, заключается в том, что вы вызываете LoadLevel после вызова ShowAd, поэтому добавление отображается, а затем сразу же переопределяется LoadLevel. Попробуйте сохранить файлы PlayerPrefs, чтобы определить, был ли уровень перезапущен или нет.

public void Replay() 
{ 
    PlayerPrefs.SetInt("isReplayed", 1); 
    Application.LoadLevel (Application.loadedLevel); 
} 

Тогда на GameController добавить:

public void Start() 
{ 
    if(PlayerPrefs.GetInt("isReplayed") == 1) 
    { 
     ShowAd(); 
    } 
    PlayerPrefs.SetInt("isReplayed", 0); 
} 
+0

ли эта работа для вас? –

Смежные вопросы