2014-02-21 57 views
1

好的,所以我們使用adbannerview中建立的統一。我們使用的基本代碼Unity Adbannerview不斷呼叫

private ADBannerView banner = null; 
void Start() 
{ 
    banner = new ADBannerView(ADBannerView.Type.Banner, ADBannerView.Layout.Top); 
    ADBannerView.onBannerWasClicked += OnBannerClicked; 
    ADBannerView.onBannerWasLoaded += OnBannerLoaded; 
} 
void OnBannerClicked() 
{ 
    Debug.Log("Clicked!\n"); 
} 
void OnBannerLoaded() 
{ 
    Debug.Log("Loaded!\n"); 
    banner.visible = true; 
    StartCoroutine(HideBanner); 
} 

IEnumerator HideBanner() 
{ 
    yield return new WaitForSeconds(10); 
    banner.visible = false; 
    Destroy(this); 
} 

void OnDestroy() 
{ 
    ADBannerView.onBannerWasClicked -= OnBannerClicked; 
    ADBannerView.onBannerWasLoaded -= OnBannerLoaded; 
} 

而現在一旦旗幟出十秒鐘,我們呼籲我們呼籲銷燬,將來自兩個事件退訂,然後破壞腳本和遊戲對象空,這是上。我知道這有點極端,但由於某種原因,在我們的應用程序中,它會在遊戲開始時顯示橫幅,但由於某種原因5分鐘後它會變得非常滯後,並且我已經指出它是某種東西試圖接收另一個廣告。因爲當我們沒有完全銷燬adbanner腳本時,另一個廣告會在5分鐘左右加載兩分鐘,另一個廣告會加載另一個廣告。一旦我們將廣告關閉,五分鐘左右就沒有滯後。

不知道如何解決這個問題。

+0

我有類似的問題控制在Unity中的AdBannerView。可見設置爲false似乎只有時纔有效。將橫幅設置爲空似乎使橫幅不能在新場景上點擊。你在這個問題上有什麼進展? –

+0

Nunery,完全沒有。這是一個非常糟糕的系統。這是我想出的(可能不是100%正確的)。它不通過統一控制。一旦你開始收聽IAds,無論你在Unity中做什麼,它都會繼續發送它們。我還談到了ItunesConnect的支持,它無法解決問題,並告訴我提交一張開發者app.apple的票,我這樣做。他們回答說,他們不處理IAd,因爲它是第三方。 不幸的是,自從我開始工作以來,我無法深入挖掘。 – Beastwood

+0

我結束了使用Prime31插件爲了得到我的應用程序所需的控制。 –

回答

0

我可能是錯在這裏也不過它是如何在我看來,就是當你調用

banner = new ADBannerView(ADBannerView.Type.Banner, ADBannerView.Layout.Top); 

它實際上創建腳本里面的變量,但團結之外的對象。就像在Xcode一方創建的視圖中一樣,您的Unity代碼只是在爲Unity內容生成的OTHER框架內運行。

所以,當你銷燬腳本時,你會失去對該對象的引用,但該對象仍然會在你的觸及範圍之外。所以,現在,下次啓動運行時,它會在Unity之外創建另一個對象,並實際上在對方上方顯示2個橫幅。所以越多次你打電話給banner = new line,你的項目開始加載越來越多的橫幅會越慢。根據我的理解,你打算使用這個系統的方式是在你進入主菜單之前有一個引導場景。在那個只能裝載一次的場景中,你在那裏創建你的旗幟,並設置對象在裝載時不破壞。從那裏你只設置它的可見性,但永遠不會摧毀它。

從我對iAd的Apple解釋中瞭解到,當您首次註冊接收廣告時,它會創建第二個視圖並完全管理該視圖。所以如果我理解正確,團結也不能控制它,並且你不能銷燬它,因爲Unity基本上是在子視圖中對橫幅視圖運行,所以破壞它也會破壞你的Unity視圖...

同樣,我可能是錯的,但這是我的理解...