2015-11-24 1 views
0

У меня есть Unity 5.2, и я хочу загружать объявление каждый раз, когда загружаю новую сцену. Я добавил рекламный код Unity в свой сценарий, который меняет сцену, когда я нажимаю кнопку. Вот сценарий:Как протестировать объявления Unity?

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


public class UI1 : MonoBehaviour 
{ 
public void ShowAd() 
{ 
    if (Advertisement.IsReady()) 
    { 
     Advertisement.Show(); 
    } 
} 


public void ChangeToScene(int sceneToChangeTo) 
{ 
    Application.LoadLevel(sceneToChangeTo); 
} 
} 

Как проверить, загружает ли сценарий объявления? Я не опубликовал приложение в Google Play Store, но хочу, чтобы реклама работала.

Я пробовал использовать журналы, но при изменении сцен показывалась только «Измененная сцена».

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


public class UI1 : MonoBehaviour 
{ 
public void ShowAd() 
{ 
    if (Advertisement.IsReady()) 
     Debug.Log("Line 1 of ad script worked!"); 
    { 
     Advertisement.Show(); 
     Debug.Log("Line 2 of ad script worked, might be showing ads!!"); 
    } 

} 


public void ChangeToScene(int sceneToChangeTo) 
{ 
    Application.LoadLevel(sceneToChangeTo); 
    Debug.Log("Changed scene!"); 
} 
} 
+0

Приложение не должно публиковаться в Google Play, чтобы реклама работала. Если это ваша единственная проблема - проблем не должно быть. Или вы пытались запустить его на устройстве и получили некоторую ошибку? –

+0

Когда я упаковываю проект в .apk и устанавливаю на вкладку Samsung Tab 3, он отлично работает, но показ объявлений не изменяется, и без него нет изменений. Однако, когда я запускаю редактор Unity внизу, он говорит: «UnityAdsEditor: Initialize (1018009, True); UnityEditor.Advertisements.UnityAdsEditor: EditorOnLoad()» - означает ли «истина», что есть объявление? –

+0

Это означает, что объявления инициализированы, но не более того. Когда объявление отображается в редакторе, вы должны увидеть синий экран с надписью «ваше объявление здесь» или что-то в этом роде. –

ответ

3

Так что проблема в том, что вы просто никогда не звоните Advertisement.Show(). Он не вызывается автоматически при загрузке сцены или что-то еще, вы должны его вызвать. Так, например, вы можете изменить ваш код немного, что-то вроде этого:

public class UI1 : MonoBehaviour 
{ 

    void Start() { 
     // We use coroutine and not calling Show() directly because 
     // it is possible that at this point ads are not initialized yet 
     StartCoroutine(ShowAds()); 
    } 

    IEnumerator ShowAds() { 
     if (Advertisement.IsReady()) { 
      Advertisement.Show(); 
      yield break; 
     } 
     // Ads are not initialized yet, wait a little and try again 
     yield return new WaitForSeconds(1f); 

     if (Advertisement.IsReady()) { 
      Advertisement.Show(); 
      yield break; 
     } 

     Debug.LogError("Something wrong"); 
    } 

    public void ChangeToScene(int sceneToChangeTo) { 
     Application.LoadLevel(sceneToChangeTo); 
    } 
} 

Вам также нужно поместить объект типа ui1 в каждой сцене, так что Start() функция будет вызываться в каждом место действия.

Вы можете продолжить отсюда. На самом деле существует много разных способов сделать это, здесь объявления начинаются с начала каждой сцены, но вы также можете сделать, например, до загрузки сцены, изменив функцию ChangeScene() или сделайте один нерушимый игровой объект мониторинга OnLevelWasLoaded() и т. Д.

+0

Спасибо! Сейчас работает как магия! Я вижу синий экран, говорящий: «Это будет ваш рекламный блок, похоже, что все работает!». Очевидно, что на каждой сцене слишком много объявлений, поэтому я создал другой скрипт с кодом, который я могу назначить объектам в некоторых сценах, и установить UI1 для загрузки сцен без рекламы. Награжден лучшим ответом: D –