Игра Unity вылетает при закрытии видео рекламы на основе вознаграждений - PullRequest
0 голосов
/ 12 марта 2019

Я использую пример кода из документации Google AdMob. Объявление загружается нормально, но когда я его закрываю, игра просто вылетает. Я действительно не знаю, что является причиной проблемы здесь. Сценарий присоединяется к игровому объекту AdManager, и функция showRewardVideoAd () вызывается, когда пользователь нажимает кнопку на RewardPanel.

Вот logcat

2019-03-12 02: 13: 04,955 6457-7464 /? E / CRASH: pid: 6457, tid: 7464, имя: Thread-44 >>> com.reading.dj014296 <<< 2019-03-12 02: 13: 04.960 6457-7464 /? E / CRASH: # 00 pc 00805824 /data/app/com.reading.dj014296-0Sd1GzbLUymSTr_l2BN52w==/lib/arm/libunity.so 2019-03-12 02: 13: 04.960 6457-7464 /? E / CRASH: # 01 pc 00806f08 /data/app/com.reading.dj014296-0Sd1GzbLUymSTr_l2BN52w==/lib/arm/libunity.so 2019-03-12 02: 13: 04.960 6457-7464 /? E / CRASH: # 02 pc 00807100 /data/app/com.reading.dj014296-0Sd1GzbLUymSTr_l2BN52w==/lib/arm/libunity.so</strong>

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.reading.dj014296, PID: 6457 Ошибка: сигнал 11 (SIGSEGV), код 1 (SEGV_MAPERR), адрес ошибки 00000000 Отпечаток пальца: 'samsung / dreamltexx / dreamlte: 9 / PPR1.180610.011 / G950FXXU4ZSA5: пользовательские / клавиши разблокировки' Редакция: «10» pid: 6457, tid: 7464, имя: Thread-44 >>> com.reading.dj014296 <<< r0 00000000 r1 00000001 r2 ab2212d0 r3 00000001 r4 00000002 r5 b4f68ed0 r6 ab2212d0 r7 00000000 r8 00000000 r9 ab2212d0 sl ab221340 fp 00000000 ip d38696a8 sp a961e1b8 lr d2f8e7a8 pc d2f8e824 cpsr 00001d28 в libunity.00805824 (родной метод) в libunity.00806f08 (родной метод) в libunity.00807100 (родной метод) </strong>

public GameObject rewardPanel;
private string appID = "ca-app-pub-3940256099942544~3347511713";
private string adID = "ca-app-pub-3940256099942544/5224354917";
private RewardBasedVideoAd rewardBasedVideo;

// Start is called before the first frame update
void Start()
{
    MobileAds.Initialize(appID);

    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;



    RequestRewardAd();


}

private void RequestRewardAd()
{

    AdRequest request = new AdRequest.Builder().Build();
    this.rewardBasedVideo.LoadAd(request, adID);

}

public void showRewardVideoAd()
{

    if (this.rewardBasedVideo.IsLoaded())
    {
        this.rewardBasedVideo.Show();
    }
    else
    {
        Debug.Log("Opps... AD did not load");
    }
}

public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
}

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");
    RequestRewardAd();
}

public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
    rewardPanel.SetActive(true);
}


public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
}

public void RecieveReward()
{

    int wallet = PlayerPrefs.GetInt("WalletAmount");

    wallet += 100;
    PlayerPrefs.SetInt("WalletAmount", wallet);
    rewardPanel.SetActive(false);

}

1 Ответ

0 голосов
/ 12 марта 2019

Неважно, я обнаружил, что проблема была вызвана загрузкой большой текстуры, которая была на игровом объекте rewardPanel. Проблема была решена путем замены огромной текстуры на меньшую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...