2017-10-26 2 views
0

이 문제는 최근에 저에게 충격을주었습니다. 전에는 눈치 채지 못했지만, Unity3D 프로젝트에서 admob 보상 비디오를 사용했습니다.Unity Admob 보상 비디오 리스너가 장면 전환 후 작동하지 않습니다.

내 프로젝트에서 사용자가 보상 비디오를 볼 때 레벨 실패에 대해 사용자에게 보상하고 레벨 선택에 자동으로 장면 변경이 적용됩니다. 사용자가 게임 플레이를 다시 시작하고 다시 실패하면 비디오를 보지만 아무 일도 일어나지 않습니다.

일부 디버깅 후 게임 플레이 장면이로드 된 두 번째 시간에 리스너가 작동하지 않는 것으로 나타났습니다. 당신이 새로운 장면 GamePlayManager가 파괴로드 할 때

나는 내가 모든 기능을하고 오전 GamePlayManager 스크립트 ..

public class GamePlayManager : MonoBehaviour { 
private RewardBasedVideoAd rewardBasedVideoAd; 

void Start() 
{ 
rewardBasedVideoAd = RewardBasedVideoAd.Instance; 
     RequestRewardBasedVideo(); 

     rewardBasedVideoAd.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad; 
     // has rewarded the user. 
     rewardBasedVideoAd.OnAdRewarded += HandleRewardBasedVideoRewarded; 
} 

private void RequestRewardBasedVideo() 
    { 

     #if UNITY_ANDROID 
     string adUnitId = GameConstants.AdmobRewardedVideoID; 
     #elif UNITY_IPHONE 
     string adUnitId = GameConstants.AdmobIOSRewardedVideoID; 
     #else 
     string adUnitId = "unexpected_platform"; 
     #endif 

     AdRequest request = new AdRequest.Builder().Build(); 
     rewardBasedVideoAd.LoadAd(request, adUnitId); 
    } 

    public void showAdmobRewardedVideo() 
    { 
     if (rewardBasedVideoAd.IsLoaded()) 
     { 
      rewardBasedVideoAd.Show(); 
     } 
    } 

    public void HandleRewardBasedVideoRewarded(object sender, Reward args) 
    { 

     Debug.Log ("Unity AdmobRewardGiven"); 

     nextLevel(); 
     gotoLevelSelection(); 

    } 


    public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args) 
    { 
     Debug.Log ("Admob RewardedVideo FailedToLoad"); 
    } 
} 

답변

0

있습니다. GamePlayManager 스크립트가 파괴되지 않는 Start 기능

1 .Add DontDestroyOnLoad(gameObject); 있도록 새로운 장면이로드 : 당신은 두 가지 옵션이 있습니다. 당신이 +=에 가입처럼 -=OnDestroy 함수에서 이벤트에

2 .Unsubscribe합니다. Admob 예제를 보지 못했지만 항상 이벤트 구독을 취소해야합니다.

public void OnDestroy() 
{ 
    rewardBasedVideoAd.OnAdFailedToLoad -= HandleRewardBasedVideoFailedToLoad; 

    rewardBasedVideoAd.OnAdRewarded -= HandleRewardBasedVideoRewarded; 
} 

이 중 하나라도 문제를 해결해야합니다. 하나가 실패하면 다른 것을 사용하십시오.

관련 문제