Интерстициальные объявления в Unity
У меня есть этот код для InterstitialAds в Unity, и я хочу запускать эту полноэкранную рекламу каждый раз, когда уровень закрывается и начинается новый уровень, поэтому я использую функцию OnDestroy, но когда мне нужно вызвать interstitial.destroy();
? Между: Правильный ли код для правильной работы игры? Спасибо за все ответы и извините за мой английский:)
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);
}
}
2 ответа
Если скрипт (GoogleAdsScript
) который держит InterstitialAd
ссылка на экземпляр (interstitial
) собирается уничтожить, вы должны позвонить interstitial.destroy();
, Вы делаете это, чтобы не потерять ссылку.
Мое предложение состоит в том, чтобы сделать важные функции в GoogleAdsScript
сценарий будет public
, Прикреплять GoogleAdsScript
в GameObject называется AdsObj. Положил DontDestroyOnLoad(transform.gameObject);
в Awake()
функция GoogleAdsScript
скрипт, чтобы он не разрушался при загрузке новой сцены. Теперь вы можете получить доступ 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
сценарий больше.
Это сработало для меня...
Псевдо:
- Создайте статический скрипт менеджера объявлений (см. Пример ниже)
- Запросите промежуточную рекламу в начале уровня.
- Когда уровень пройден, проверьте, загружено ли объявление, затем покажите его.
- Сразу после этого загрузите свой следующий уровень или сцену меню (НЕ УНИЧТОЖАЙТЕ ПРОМЕЖУТОЧНОЕ ОБЪЯВЛЕНИЕ!)
Пример статического AdManagerScript:
using GoogleMobileAds.Api;
public static class AdManagerScript
{
private static InterstitialAd interstitial;
// Call this method only once when your app starts
public static void StartMobileAdsSDK()
{
#if UNITY_ANDROID
string appId = "...your admob appid here...";
MobileAds.Initialize(appId);
#endif
}
public static void RequestInterstitial()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/1033173712";
interstitial = new InterstitialAd(adUnitId);
AdRequest request = new AdRequest.Builder().Build();
interstitial.LoadAd(request);
#endif
}
public static void ShowInterstitital()
{
#if UNITY_ANDROID
if (interstitial.IsLoaded())
{
interstitial.Show();
}
#endif
}
Далее в вашем уровне сценария:
...
void Start() {
AdManager.RequestInterstitial();
}
...
void GameLevelFinished() {
AdManager.ShowInterstitial();
SceneManager.LoadScene("NextLevelName");
}
Кроме того, не забудьте вызвать StartMobileAdsSDK один раз в начале, когда ваше приложение запускается.
Admanager.StartMobileAdsSDK();
Используйте директивы прекомпилятора (#iF#endif), чтобы не пытаться загружать рекламу в редакторе Unity. В консоли будет несколько сообщений, но это нормально.