Google Admob Reward Video callback вызывается несколько раз после перезагрузки сцены в Unity - PullRequest
0 голосов
/ 11 мая 2018

Я разрабатываю Android-игру для Android в Unity.Я интегрировал Google Admob SDK в свой проект и сумел показать видеообъявление награды Google AdMob в моем Android APK, ссылаясь на https://developers.google.com/admob/unity/rewarded-video.

Однако, когда сцена перезагружается для перезапуска функций обратного вызова игры, вызываемых несколько раз.

Пример функции обратного вызова:

// 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;

сцена загружается первый раз: функции обратного вызова вызываются 1 раз.

сцена загружается снова: функции обратного вызова вызывают 2 раза.

сцена загружается снова: функции обратного вызова вызываются 3 раза.

...

Я думаю, что основная причина заключается в том, что функции обратного вызова накапливаются даже при перезагрузке сцен Unity.

Как я могу сделать так, чтобы такие функции обратного вызова вызывались только 1 раз, даже меняя сцену?

1 Ответ

0 голосов
/ 17 октября 2018

Вам нужно отписаться от описателей событий после использования:

    // 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;

Сделайте это, например, методом OnDestroy.

...