У меня была та же проблема, что я решил, добавив эти две строки:
Advertisement.RemoveListener (this);
myButton.onClick.RemoveListener(ShowRewardedVideo);
после условного лога c для каждого статуса завершения объявления. Завершить событие должно быть так:
public void OnUnityAdsDidFinish(string placementId, ShowResult showResult)
{
// Define conditional logic for each ad completion status:
if (showResult == ShowResult.Finished)
{
// Reward the user for watching the ad to completion.
}
else if (showResult == ShowResult.Skipped)
{
// Do not reward the user for skipping the ad.
}
else if (showResult == ShowResult.Failed)
{
Debug.LogWarning("The ad did not finish due to an error.");
}
else
{
Debug.LogError("Error");
}
Advertisement.RemoveListener (this);
myButton.onClick.RemoveListener(ShowRewardedVideo);
}
Я предлагаю поставить код даже в случае ошибки:
public void OnUnityAdsDidError (string message)
{
// Log the error.
Advertisement.RemoveListener (this);
myButton.onClick.RemoveListener(ShowRewardedVideo);
}