当前位置: 首页 > 知识库问答 >
问题:

Unity游戏在关闭基于奖励的视频广告时崩溃

颛孙轩昂
2023-03-14

我使用的是Google的AdMob文档中的示例代码。广告加载良好,但当我关闭它,游戏只是崩溃。我真的不知道是什么导致了这里的问题。脚本附加到AdManager游戏对象,当用户按下RewardPanel上的按钮时调用函数showRewardVideoAd()。

这是logcat

2019-03-12 02:13:04.955 645 7-7464/?E/CRASH:PID:6457,TID:7464,名称:Thread-44>>>com.reading.dj014296<<2019-03-12 02:13:04.960 645 7-7464/?E/Crash:#00 pc 00805824/data/app/com.reading.dj014296-0sd1gzbluymstr_l2bn52w==/lib/arm/libunity.so 2019-03-12 02:13:04.960 645 7-7464/?E/Crash:#01 pc 00806F08/Data/App/Com.Reading.DJ014296-0SD1GZBLUYMSTR_L2BN52W==/lib/arm/libUnity.so 2019-03-12 02:13:04.960 645 7-7464/?E/CRASH:#02 pc 00807100/data/app/com.reading.dj014296-0sd1gzbluymstr_l2bn52w==/lib/arm/libunity.so

E/AndroidRuntime:致命异常:主进程:com.reading.dj014296,PID:6457java.lang.error:信号11(SIGSEGV),代码1(SEGV_MAPERR),错误地址00000000构建指纹:“Samsung/DreamLTexx/DreamLTe:9/PPR1.180610.011/G950FXXU4ZSA5:User/Release-Keys”修订版:“10”PID:6457,TID:7464,名称:Thread-44>>com.reading.dj014296<

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个答案

刘星火
2023-03-14

不要紧,我发现问题是因为加载了一个大纹理而导致的,那是在rewardPanel游戏对象上的。用较小的纹理代替巨大的纹理解决了这个问题。

 类似资料:
  • 我在Unity3d中显示admob插件的奖励视频广告时遇到问题。首先,这是我的脚本: 我用一个按钮运行RequestRewardVideo()方法,但什么也没发生。我尝试运行按钮中的和中的方法,但只显示了视频1/3次。。。这个怎么了? 提前感谢

  • 我正在尝试使用Admob在我的android应用程序中显示奖励视频广告。如果我用谷歌示例广告单元ID运行应用程序,它工作得很好,但如果我将其更改为我的奖励广告单元ID,则不会加载广告。

  • 我已经成功地将横幅广告和基于图像的间隙广告集成到我的应用程序中,没有任何问题。 我正在考虑添加一个基于奖励的视频广告,但是我不确定我是否可以简单地按照插页广告设置代码,但将adUnitID更改为我在Admob中设置的奖励视频广告的代码? 当我这样做的时候,测试广告显示了一个间隙,因此我不知道视频是否会显示。 关于以这种方式设置它,我在网上找不到什么指导。 这是我目前使用的:

  • 我正在尝试使用AdMob显示奖励视频广告。我添加了2个广告网络(AdColony、InMobi)并提供了所有必需的详细信息,如帐户ID等。 我还下载并编译了所需的网络SDK和适配器。 广告代码: 问题是我总是从AdMob那里得到同样的回应: 获取广告回复时出现问题。错误代码:0 有什么办法解决这个问题吗? 更新: 我通过从AdRequest中删除“addTestDevice()”克服了加载广告的问

  • 我已经发布了一个iOS应用程序,但我在使用谷歌移动广告SDK加载奖励视频广告时遇到了问题。 当玩家点击按钮查看视频广告时,玩家很少会看到视频。大多数时候,用户会看到Admob无法填写请求的错误: 有时,他们需要点击几下才能获得一个,有时,无论点击多少次,他们都无法获得一个。这个问题更多发生在我的奖励视频中,但也发生在我的横幅广告中。有时谷歌无法为我提供横幅广告。有人知道为什么这不起作用吗? 我的广

  • 我正在尝试整合Facebook奖励视频。但是在获得放置ID时,奖励视频没有放置位置。只有本机、横幅、间隙和中矩形。我正在使用Facebook文档中的这些步骤 我的logcat给出以下错误: 05-25 18:27:22.530 6932-6932奖励视频广告加载失败:广告请求中的显示格式与为此放置指定的显示格式不匹配。每个放置只能与一种显示格式一起使用。您可以创建多个放置以使用多种显示格式。