2015-11-24 86 views
0

我有Unity 5.2,每次加載新場景時都想加載廣告。我將Unity廣告代碼添加到我的腳本中,當我按下按鈕時會更改場景。以下是腳本:如何測試Unity Ads?

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商店,但我想確保廣告能夠正常工作。

我試過使用日誌,但只有「更改場景」顯示時,更改場景。

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文件並安裝在三星標籤3上時,它工作正常,但沒有廣告顯示,沒有或沒有廣告腳本也沒有變化。然而,當我在Unity編輯器在底部運行says-「UnityAdsEditor:初始化(1018009,真); 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 –