На финальной стадии разработки игры добавил в игру рекламу AdMob сделал всё по туториалу.В едиторе всё работает как надо,межстраничное обьявления отображаеться, реклама с вознаграждением тоже.Сбилдил проект в апк файл,скинул на телефон, и тут началось.Реклама просто не работает.Нажимаю на кнопку для просмотра рекламы с вознаграждением, а реклама не показывается, межстраниччная реклама должна срабатывать после смерти, но ее тоже нет.Но это половина проблемы, когда после проигрыша нажимаю на рестарт меню рестарта просто пропадает и игра не перезапускается.Ко всему этому в игре при столкновении с врагом игрок умирает,но в билде он его просто касется и всё.
Сразу говорю: 1.В едиторе ни одной из проблем нету.
2.Игрок не умирает после столкновения только с одним типом врагов, хотя принцип действия у всех одинаковый.
3.До добавления пакета адмоб всё работало нормально, но проверял я еще до добавления самой рекламы и еще многих действий.
И ещё в консоли вот такая ошибка.Ошибка помечена оранжевым знаком⚠️ You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor ()
ButtonBehaviour:.ctor ()
GoogleMobileAds.Unity.InterstitialClient:CreateButtonBehavior ()
GoogleMobileAds.Unity.InterstitialClient:Show ()
GoogleMobileAds.Api.InterstitialAd:Show ()
InterAd:ShowAd () (at Assets/Scripts/Ads/InterAd.cs:23)
PlayerController:Die () (at Assets/Scripts/PlayerController.cs:128)
PlayerController:OnCollisionEnter2D (UnityEngine.Collision2D) (at Assets/Scripts/PlayerController.cs:95)
Я уверен дело как раз в этой ошибке, так как там упомянут OnCollisionEnter2D и строка в которой по идее игрок должен умирать от касания с врагом.
Вот этот скрипт вызывает ошибку.Так как я в библиотеке адмоб не силён может вы ошибку найдетё.
Функцию внизу я написал для того чтобы рекламу можно было воспроизводить несколько раз в одной сцене, так как у меня вся игра происходит в одной сцене и нету переходов между сценами,и судя по всему как раз эта функция приводит к ошибке.Но я не совсем понимаю что в ней не так в силу того что я с этой библиотекой работаю второй раз
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
private void OnEnable()
{
interstitialAd = new InterstitialAd(intestitialId);
adRequest = new AdRequest.Builder().Build();
interstitialAd.LoadAd(adRequest);
}
public void ShowAd()
{
if (interstitialAd.IsLoaded())
interstitialAd.Show();
}
public void OnAdEnded()
{
interstitialAd = new InterstitialAd(intestitialId);
adRequest = new AdRequest.Builder().Build();
interstitialAd.LoadAd(adRequest);
}
Насколько я помню, этот варнинг не связан с какими-то проблемами. Это какие-то костыли сомнительного качества от адмоба, чтобы показывать тестовые окна в редакторе, как раз чтобы иметь возможность проверить, что все правильно настроено, без билда. Они работают как должны, а в билд не идут. Можно с этим варном разобраться разве что из эстетических соображений.
Думаю, реклама не грузится по другой причине. Так как и Google Play и AdMob принадлежат гуглу, их сервисы тесно связаны. Реклама с тестовым ID запустится только на подписанном билде(возможно, требует также публикации в закрытый тест, сейчас уже не вспомню). И для рабочей рекламы точно нужно, чтобы пакет был опубликован, прошел проверку и уже был доступен для скачивания. Тогда реклама заработает на подписанных пакетах с номером версии равным или ниже той, что опубликована в сторе
Игровой процесс же может нарушаться, например, из за того, что некорректный вызов рекламы происходит в начале функции. При любом действии с инициализируемыми объектами нужно проверять, что объект не null, инициализация была завершена и реклама загружена. В примере выше проверется только третий пункт. Я советую, пока не будет четкого видения происходящего, использовать скрипт из демонстрационного проекта AdMob, там гораздо больше всего, что нужно делать для правильной работы. Обычно он есть и в пакете с плагином, но можно взять здесь
Николай Соколов, тоесть, в том случае если мне надо сбилдить проект для теста, мне нужно отключить рекламу.А если игра уже будет полностью готова к релизу, мне надо включить рекламу, и выгрузить в плей маркет?
d1msk1y, отключать ничего не нужно, код должен быть организован таким образом, чтобы все не ломалось в зависимости от фазы луны или качества интернет-подключения. Реклама ведь может не инитнуться по разным причинам, не только из за неподходящего билда) скрипт по ссылке как раз организован таким образам и писался инженерами из гугла, они то, наверное, знают, что предлагают!
Николай Соколов, Перед релизом игры хотел бы уточнить.Реклама в билде так и не зработала, но в целом всё нормально.Будет ли реклама показываться когда игра будет в плей маркете с работающими токенами адмоб(Не тестовыми)?
d1msk1y, ну, я кода не видел) Если все настроено правильно, должно заработать после релиза. Если не работает, можно посмотреть логи по ADB, если в них все ок, можно в техподдержку написать. Могут быть проблемы с аккаунтом, которые с техподдержкой решается