2016-08-11 16 views
0

ユニティのインタースティシャル広告用にこのコードを使用しています。レベルが終了して新しいレベルが開始されるたびに、フルスクリーン広告を開始したいので、OnDestroy機能を使用します。の間:ゲームの円滑な実行のためのコードは正しいですか? InterstitialAdインスタンス参照(interstitial)を保持しているスクリプトは、(GoogleAdsScript)を破壊しようとしている場合のおかげで、すべての答えと私の英語のため申し訳ありません:)ユニティのインタースティシャル広告

public class GoogleAdsScript : MonoBehaviour 
    { 
     bool isLoaded = false; 
     private InterstitialAd interstitial; 
     private BannerView bannerView; 

     void Start() 
     { 
      RequestInterstitial(); 

      //RequestBanner(); 
     } 

     void OnDestroy() 
     { 
      if (interstitial.IsLoaded() && isLoaded == false) 
      { 
       interstitial.Show(); 
       isLoaded = true; 
      } 
     } 

     private void RequestInterstitial() 
     { 
    #if UNITY_ANDROID 
      string adUnitId = "ca-app-pub-3940256099942544/1033173712"; 
    #elif UNITY_IPHONE 
      string adUnitId = "INSERT_IOS_INTERSTITIAL_AD_UNIT_ID_HERE"; 
    #else 
      string adUnitId = "unexpected_platform"; 
    #endif 

      // Initialize an InterstitialAd. 
      interstitial = new InterstitialAd(adUnitId); 
      // Create an empty ad request. 
      AdRequest request = new AdRequest.Builder().Build(); 
      // Load the interstitial with the request. 
      interstitial.LoadAd(request); 
     } 

     private void RequestBanner() 
     { 
    #if UNITY_ANDROID 
      string adUnitId = "ca-app-pub-3940256099942544/6300978111"; 
    #elif UNITY_IPHONE 
      string adUnitId = "INSERT_IOS_BANNER_AD_UNIT_ID_HERE"; 
    #else 
      string adUnitId = "unexpected_platform"; 
    #endif 

      // Create a 320x50 banner at the top of the screen. 
      bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Top); 
      // Create an empty ad request. 
      AdRequest request = new AdRequest.Builder().Build(); 
      // Load the banner with the request. 
      bannerView.LoadAd(request); 
     } 


    } 

答えて

1

のために、あなたはinterstitial.destroy();を呼び出す必要があります。あなたは参照を失うことはありません。

GoogleAdsScriptスクリプトの重要な機能をpublicにすることをお勧めします。 GameObjectにAdsObjと呼ばれるGoogleAdsScriptを添付します。 GoogleAdsScriptスクリプトのAwake()機能にDontDestroyOnLoad(transform.gameObject);を入れて、新しいシーンをロードするときに破壊しないようにします。他のスクリプトからGoogleAdsScriptにアクセスして、広告を表示または非表示にすることができます。

public class OtherScript : MonoBehaviour 
{ 
    public GoogleAdsScript googleAds; 

    void Start() 
    { 
     googleAds = GameObject.Find("AdsObj").GetComponent<GoogleAdsScript>(); 
     googleAds.RequestInterstitial();//Assumes that RequestInterstitial is now public 
    } 
} 

GoogleAdsScriptスクリプトをもう削除する理由はありません。

+0

3レベルごとに広告を使用する場合は、interstitial.destroy()を呼び出す必要がありますか? – Adam

+0

あなたは私の答えを理解していないように聞こえます。その部分が混乱しているかどうか質問することができます。 'interstitial = new InterstitialAd(adUnitId);'を実行する場合は、 'OnDestroy'または' OnDisable'関数で 'interstitial.destroy();'を実行する必要があります。私はあなたに、すべてが入っているあなたのシーンにただ1つの 'GoogleAdsScript'を持たせる方法を示しました。あなたが私の答えでその方向に従うなら、あなたはそれを破壊する必要はありません。 – Programmer

+0

私はスクリプトを変更します:void Update() { if(interstitial.IsLoaded()&& isLoaded == false) { interstitial.Show ; isLoaded = true; }} ボイドOnDestroy(){ IF(interstitial.IsLoaded())interstitial.Destroy(); } 'これはクリーンな方法ですか? – Adam

関連する問題