2014-02-21 4 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; 
} 

И теперь, как только баннер показал в течение десяти секунд мы называем мы призываем Destroy, что будет отказаться от обоих событий, а затем уничтожить сценарий и пустой GameObject, что он включен. Я знаю, что это немного экстремально, но по какой-то причине в нашем приложении он отображает баннер в начале игры, но потом по какой-то причине через 5 минут он станет очень лагги, и я точно определил, что это что-то сделайте это с помощью объявления, пытающегося получить другое. Потому что, когда мы не полностью разрушили сценарий adbanner, другое объявление будет загружаться около двух минут, а другое - через 5 минут. И как только мы сняли рекламные объявления, не было никакого отставания около пяти минут.

Не знаю, как это исправить.

+0

У меня есть аналогичные проблемы, управляющие AdBannerView в Unity. Кажется, что установка видимого значения на false работает только иногда. Установка значка в значение null, по-видимому, делает баннер недоступным для новых сцен. Прошли ли вы по этому вопросу? –

+0

Nunery, совсем нет. Это довольно плохая система. Это то, что я понял (может быть, не на 100% правильно). Он не контролируется через Единство. Когда вы начнете слушать IAds, он будет продолжать отправлять их независимо от того, что вы делаете в Unity. Я также поговорил с поддержкой ItunesConnect, которая не смогла решить проблему, и сказала, чтобы я отправил билет разработчику, который я сделал. Они ответили, что не занимаются IAd, поскольку это третья сторона. И, к сожалению, с тех пор, как я начал работать, я не мог копать глубже. – Beastwood

+0

В итоге я использовал плагин Prime31, чтобы получить элемент управления, который мне нужен для моего приложения. –

ответ

0

Я мог бы быть неправильно здесь также, но, как мне кажется, является то, что, когда вы звоните

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

это фактически создает переменную внутри этого сценария, но объект вне единства. Как и в представлении, создаваемом стороной Xcode, и ваш код Unity просто запускается внутри ДРУГОГО кадра, который он создает для контента Unity.

Поэтому, когда вы уничтожаете скрипт, вы теряете ссылку на этот объект, но объект сохраняется за пределами вашей досягаемости. Итак, в следующий раз, когда запускается Start, он создаст еще один объект за пределами Unity и фактически отобразит 2 баннера поверх друг друга. Таким образом, чем больше раз вы называете баннер = новая строка, тем медленнее будет ваш проект, так как он начинает загружать все больше и больше баннеров.

AsI понимает, что вы должны использовать эту систему, чтобы иметь сцену начальной загрузки, прежде чем попасть в главное меню. В той сцене, которая будет когда-либо загружаться только один раз, вы создаете свой баннер и устанавливаете, чтобы объект не разрушался при загрузке. Оттуда вы только устанавливаете видимость, но никогда не уничтожаете ее.

Из того, что я понял из объяснения Apple iAd, когда вы впервые регистрируетесь на получение объявлений, он создает второе представление и полностью управляет этим представлением. Поэтому, если я правильно понимаю это, единство также не имеет никакого контроля над ним, и вы не можете его уничтожить, потому что Unity в основном работает в представлении для детей в виде баннера, поэтому его уничтожение также уничтожит ваше представление Unity ...

Опять же, я могу ошибаться, но это то, как я это понимаю ...

Смежные вопросы