2016-06-20 9 views
1

私はユニティ広告を実施していました:ユニティ広告は、どのくらいの頻度で広告が表示されるかを制御します。

void Start() 
{ 
    Advertisement.Show(); 
} 

私の団結広告ゲームオブジェクトに接続されているスクリップで。

私がゲームをテストすると、シーンがロードされたときに広告が表示されます(これはゲームセッションの結果を表示するシーンです)これが私の望むものですが、毎回広告を表示するのは良いとは思いません非常に頻繁にロードされるので、このシーンがロードされる時間。広告が表示されるべきかどうかを決定する背景に何らかのアルゴリズムがありますか?

私は、時間の単位で表示することができる広告の数に制限があると思いますが、一般的な広告では、それが既に組み込まれている可能性があると考えています。約50%の広告を表示するために

int number = Random.Range(1, 2); 
    if (number == 1) { 
     Advertisement.Show(); 
    } 

だから、私の質問は、私は次のように、広告ランダマイザーのいくつかの種類を、このようにそれを残して、そして仕事への広告プラグインを聞かせて、またはIべき必要があります時間の?

完全公開で、私は数日前にユニティフォーラムでこれを尋ねましたが、まだ承認されていない(公開されていない)ので、おそらくそれを削除します。

+0

質問には答えがありませんが、コメントはあります。投稿した「ランダム」の例では、広告の50%は表示されません。画面が開始されるたびに表示される確率は50%ですが、時間の50%しか表示されないことを保証するものではありません:) –

+0

@NahuelIanniいいえ、私はそれを試してみるだけの例でした私の思考を証明してください:)問題は、このシーンが読み込まれたときに広告に最適な時間だと思うが、私のユーザーにスパムが欲しくないと思う。いくつかの中間地点を見つける必要があります – klskl

答えて

2

免責事項:ユニティ広告 フレームワークの経験は一切ありません。ユニティチームによって行われたblog postに基づいて

、私は簡単な解決策は、シーンが広告にそれがロードされた最後の時間を示し、状況に応じているかどうかを確認することができ、新しいものを表示したり、やることを言うだろう何もない。

我々は2つのステップでそれを行うことができます。

  1. 広告が表示されたときを追跡するための静的クラスを作成します。
  2. シーン上で、静的クラスの値に基づいて新しいものを表示するかどうかを判断し、それを更新します。

    public static class AdvertisementTracker 
    { 
        /// Create a property or method to store and retrieve whether 
        /// an advertisement was shown at a given time. 
        /// You can use a bool, datetime, IList<DateTime> or whatever property that you need. 
    
        public static bool AdShown = false; 
        public static DateTime LastTimeShown; 
        public static IList<DateTime> TimesShown = new List<DateTime>(); 
    
        /// You can even have a method that takes the elapsed time between calls and check 
        /// if they meet the criteria you wish to show your ads. 
        public static bool ElapsedTimeConditionMet(float elapsedTime) 
        { 
         // For example, the elapsed time exceeds 40 seconds, so a new add can be shown. 
         return elapsedTime >= 40.0f; 
        } 
    } 
    

    次に、あなたのシーンに、あなたの広告オブジェクトに次のスクリプトを添付:たとえば

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

public class SimpleAdScript : MonoBehaviour 
{ 
    void Start() 
    { 
     Advertisement.Initialize("<the ad ID>", true);  
     StartCoroutine(ShowAdWhenReady()); 
    } 

    IEnumerator ShowAdWhenReady() 
    { 
     while (!Advertisement.isReady()) 
      yield return null; 

     if(!AdvertisementTracker.AdShown) 
     { 
      Advertisement.Show(); 
     } 

     AdvertisementTracker.AdShown = !AdvertisementTracker.AdShown; 
    } 
} 
スクリプトの目的は広告があるかどうかを確認することです

Unityフレームワークから準備が整いました。 そうであれば、最後に広告が表示されたかどうかを確認します。そうでない場合は、それが表示されます。そうでない場合は、静的クラスが更新されて次の反復の準備が整います。

+0

ありがとう!だから、私はこれをすべて追跡しなければなりませんが、それは非常に複雑には見えません。これにより、シーンがロードされるたびに広告が表示され、追加のチェックにdateTime値を使用することができます(シーンが1分以内に2回ロードされる場合など) – klskl

+0

これはまさにポイントです。この例は本当にシンプルですが、datetimesを使用することで、それを表示する頻度(20分に1回)を追跡でき、ブール値では時間の50%を表示できます。 –

+0

私は家に帰るときにこれをテストします(今のところ、団結は私的プロジェクトです)。これは完全に機能すると確信していますが、テストするまでオープンにしておきます。 p) – klskl

関連する問題