You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Google Mobile Ads代码报错求助:RewardedAd相关4个错误

问题分析与解决方案

你的代码使用的是旧版Google Mobile Ads SDK的API,而当前使用的SDK版本(大概率是v8.x及以上)已更新了RewardedAd的核心API,导致出现这4个错误。以下是逐个问题的解决方式及修正后的完整代码:

错误原因与修复点

  • 错误1:'RewardedAd' 不包含接受1个参数的构造函数
    新版SDK中RewardedAd不再支持直接实例化,需通过静态方法RewardedAd.Create(rewardedUnitId)创建实例。

  • 错误2:'RewardedAd' 不包含 'OnAdLoaded' 的定义
    事件名称已变更为AdLoaded,需绑定该事件替代旧版的OnAdLoaded。

  • 错误3:当前上下文中不存在名称 'HandleAdLoaded'
    需自行实现符合AdLoadedEventHandler委托签名的回调方法。

  • 错误4:'RewardedAd' 不包含 'LoadAd' 的定义
    v8.x及以上版本中,广告加载方法改为异步的LoadAsync,需通过异步任务调用。

修正后的完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using System;
using System.Threading.Tasks;

public class AdShower : MonoBehaviour
{
    private string rewardedUnitId = "MyId";
    private RewardedAd rewardedAd;

    private void OnEnable()
    {
        // 创建RewardedAd实例(替代旧版构造函数)
        rewardedAd = RewardedAd.Create(rewardedUnitId);
        
        // 绑定广告加载完成事件
        rewardedAd.AdLoaded += HandleAdLoaded;
        // 可选:绑定加载失败事件用于调试
        rewardedAd.AdFailedToLoad += HandleAdFailedToLoad;

        AdRequest request = new AdRequest.Builder().Build();
        // 异步加载广告
        _ = LoadRewardedAdAsync(request);
    }

    // 实现广告加载完成的回调方法
    private void HandleAdLoaded(object sender, EventArgs args)
    {
        Debug.Log("激励广告加载完成");
    }

    // 实现广告加载失败的回调方法
    private void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        Debug.Log($"激励广告加载失败:{args.LoadAdError.Message}");
    }

    // 异步加载广告的封装方法
    private async Task LoadRewardedAdAsync(AdRequest request)
    {
        try
        {
            await rewardedAd.LoadAsync(request);
        }
        catch (Exception e)
        {
            Debug.Log($"加载广告时发生异常:{e.Message}");
        }
    }
}

额外注意事项

  1. SDK版本兼容:若你使用的是v7.x版本SDK,加载方法仍为LoadAd(request),但实例创建仍需用RewardedAd.Create,事件名称为AdLoaded。
  2. 类名冲突排查:若怀疑类名冲突,可使用完整命名空间声明变量:private GoogleMobileAds.Api.RewardedAd rewardedAd;,避免与自定义的RewardedAd类混淆。

内容的提问来源于stack exchange,提问作者Dimonset

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:32:44