Редактировать: После 12 часов без перерыва полного разочарования я подумал, что должен создать новый проект и просто переместить все туда. И это сработало! Миграция заняла всего около 10 минут!
Я новичок в Unity, я полностью закончил свою игру, но реализация рекламы мешала мне в течение последних 48 часов.
Что бы я ни делал, я просто не могу обойти это. Я искал везде, удалил свои плагины и повторно импортировал их. Рассматривал каждый сценарий, который мешал показу рекламы / сбой игры, и соответственно настраивал мою игру, но безуспешно.
Сначала мое приложение нормально работало на моем телефоне, но недавно (после некоторых изменений кода) оно просто зависало при запуске. Ниже приведены только 2 сценария, которые привели к сбою моего приложения, а также 2 сценария, ссылающиеся на рекламу.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;
public class adsScript : MonoBehaviour
{
private RewardBasedVideoAd rewardBasedVideo;
public void Start()
{
DontDestroyOnLoad(gameObject);
this.rewardBasedVideo = RewardBasedVideoAd.Instance;
// Called when an ad request has successfully loaded.
rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
// Called when an ad request failed to load.
rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
// Called when an ad is shown.
rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened;
// Called when the ad starts to play.
rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted;
// Called when the user should be rewarded for watching a video.
rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
// Called when the ad is closed.
rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
// Called when the ad click caused the user to leave the application.
rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;
string appId = "ca-app-pub-2080245637481049~6344779320";
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize(appId);
// Get singleton reward based video ad reference.
this.RequestRewardBasedVideo();
}
private void RequestRewardBasedVideo()
{
string adUnitId = "ca-app-pub-2080245637481049/3426756348";
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the rewarded video ad with the request.
this.rewardBasedVideo.LoadAd(request, adUnitId);
}
#region RewardBasedVideo callback handlers
public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
{
MonoBehaviour.print("video loaded");
}
public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print(
"HandleRewardBasedVideoFailedToLoad event received with message: " + args.Message);
}
public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
}
public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
}
public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoClosed event received");
}
public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
string type = args.Type;
double amount = args.Amount;
PlayerPrefs.SetInt("AdLife", 2);
MonoBehaviour.print(
"HandleRewardBasedVideoRewarded event received for " + amount.ToString() + " " + type);
}
public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
}
#endregion
}
и сценарий (из другой сцены), где я получаю доступ к рекламе
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;
public class openAdVideo: MonoBehaviour
{
public void PlayAdVideo()
{
if (RewardBasedVideoAd.Instance.IsLoaded())
{
try
{
RewardBasedVideoAd.Instance.Show();
}
catch(Exception e)
{
Debug.Log(e.Message);
}
}
else
{
}
}
}