2016-06-20 3 views
1

Ich habe Unity Anzeigen implementiert und haben:Unity-Anzeigen, wer steuert, wie oft sie angezeigt werden, mich oder Werbung plugin?

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

Im Scrip meiner Einheit Anzeige Gameobject verbunden.

Wenn ich mein Spiel teste, wird eine Anzeige angezeigt, wenn die Szene geladen wird (es ist eine Szene, die Ergebnisse Ihrer Spielsitzung anzeigt) und das ist was ich will, aber ich denke nicht, dass es gut ist, jede einzelne Werbung zu zeigen Zeit, die diese Szene lädt, da sie ziemlich oft geladen wird. Gibt es eine Art Algorithmus im Hintergrund, der entscheidet, ob die Anzeige angezeigt werden soll?

Ich denke, es sollte eine Art Grenze geben, wie viele Anzeigen in x Zeit angezeigt werden können, nicht nur in der Einheit, sondern in Anzeigen im Allgemeinen, deshalb dachte ich, dass es bereits eingebaut sein könnte.

Also, meine Frage, sollte ich es so lassen, und die Anzeige-Plugin, um den Job lassen, oder sollte ich ad irgendeine Art von randomizer, wie:

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

die Anzeige etwa 50% zeigen der ganzen Zeit?

Volle Enthüllung, ich fragte dieses auf den Einheitsforen auch, vor einigen Tagen, und es muss noch genehmigt werden (so wird es nicht veröffentlicht), wird das wahrscheinlich löschen.

+0

Ich habe keine Antwort auf Ihre Frage, aber ein Kommentar. Das Beispiel "Zufällig", das Sie gepostet haben, zeigt in 50% der Fälle keine Anzeigen. Es hat eine Chance von 50%, dass es jedes Mal gezeigt wird, wenn der Bildschirm startet, aber garantiert nicht, dass es nur in 50% der Fälle angezeigt wird :) –

+0

@NahuelIanni Nein, ich verstehe das, es war einfach ein Beispiel zum ausprobieren und beweise meinen Gedanken :), Problem ist, ich denke, wenn diese Szene geladen wird, ist die perfekte Zeit für eine Anzeige, aber ich möchte nicht, dass meine Benutzer gespammt werden ..Brauchen Sie etwas Mittelweg zu finden – klskl

Antwort

2

Haftungsausschluss: Ich habe keinerlei Erfahrung mit dem Unity Ads Framework.

auf den vom Team Unity gemacht blog post Basierend, würde ich sagen, dass eine einfache Lösung, wenn die Szene es und je nach Situation geladen wurde Anzeigen die letzte Zeit zeigte zu überprüfen sein kann, zeigt einen neuen oder tun gar nichts.

Das können wir in zwei Schritten tun:

  1. eine statische Klasse erstellen für die Verfolgung, wenn eine Anzeige wurde gezeigt.
  2. Bestimmen Sie in Ihrer Szene, ob die Bedingung erfüllt ist, um eine neue basierend auf dem Wert der statischen Klasse anzuzeigen, und aktualisieren Sie sie.

Zum Beispiel:

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; 
    } 
} 

Dann auf der Szene, fügen Sie das folgende Skript, um Ihre Anzeige Objekt:

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; 
    } 
} 

Das Ziel des Skripts zu prüfen ist, ob eine Anzeige ist bereit aus dem Unity-Framework. Wenn ja, überprüft es, ob eine Anzeige zuletzt angezeigt wurde. Wenn dies nicht der Fall ist, wird es angezeigt, andernfalls wird die statische Klasse aktualisiert, um für die nächste Iteration bereit zu sein.

+0

Vielen Dank! Also muss ich all das selbst nachverfolgen, obwohl es nicht sehr kompliziert erscheint. Dadurch wird die Anzeige jedes Mal angezeigt, wenn die Szene geladen wird, und dann kann ich die dateTime-Werte für zusätzliche Prüfungen verwenden (z. B. wenn die Szene zweimal in weniger als einer Minute geladen wird). – klskl

+0

Das ist genau der Punkt. Das Beispiel ist wirklich einfach, aber durch die Verwendung von Datumsangaben können Sie verfolgen, wie oft es angezeigt wird (etwa einmal alle 20 Minuten), und mit dem Booleschen Wert können Sie es in 50% der Fälle anzeigen. –

+0

Ich werde das testen, wenn ich nach Hause komme (im Moment ist die Einheit ein privates Projekt) Ich bin mir sicher, dass das perfekt funktioniert, aber ich werde es offen halten, bis es getestet wird (diesen Fehler vorher gemacht, etwas falsch markiert: p) – klskl

Verwandte Themen