1

我对 Unity 测试广告没有任何问题,它们在 Android 版本上显示良好,没有错误。

但是当我接近发布时,我在编辑器中关闭了“测试模式”,现在我的代码中对广告的所有引用突然在当前上下文中不存在。

错误:

Assets\Scripts\AdManager.cs(32,21): error CS0103: The name 'Advertisement' does not exist in the current context

我在网上没有找到任何关于这个的东西,我真的很困惑。尝试了“关闭广告,重新打开统一,打开广告”,但它并没有摆脱错误。

这是我的代码:

using UnityEngine;
using UnityEngine.Advertisements;

public class AdManager : MonoBehaviour
{

    public void ShowAd(int roundScore){

        Debug.Log("Recieved request to display an ad");
        Debug.Log(roundScore);

        if(roundScore >= 40){

            Debug.Log("Trying to show an ad because score is larger than 40");

            // Check for ad + show it
            if(Advertisement.IsReady("video")){
                Advertisement.Show("video");
            }
        }else{

            Debug.Log("Trying to show a random ad");

            if(Random.Range(0, 7) == 4){

                Debug.Log("Random ad will be shown if ready");

                //Check for ad + show it
                if(Advertisement.IsReady("video")){

                    Debug.Log("An ad was ready so it is being shown");
                    Advertisement.Show("video");
                }
            }
        }

    }
}

谢谢您的帮助。

4

2 回答 2

0

从包管理器中删除 sdk,如果您在统一服务下的广告选项卡中启用了内置广告扩展,只需将其停用。然后从项目内的资产商店安装并导入包。问题将得到解决。快乐编码:)

于 2020-08-28T00:02:22.603 回答
0

这是我从加班中了解到的有关此错误以及与统一广告相关的此类错误的信息。

  1. 更新统一编辑器版本。不知何故,它在升级过程中正确导入文件并解决了问题

2.1) 覆盖 UNITY_ADS 宏下的导入和其他统一广告执行代码

#if UNITY_ADS
using UnityEngine.Advertisements;
#endif

2.2) 涵盖特定于平台的进口和其他统一广告,因为统一广告目前仅适用于这两个广告

#if UNITY_IOS || UNITY_ANDROID
using UnityEngine.Advertisements;
#endif

3.) 在 UNITY_IOS 宏下覆盖 iOS 特定的导入

#if UNITY_IOS
using UnityEngine.Advertisement.IosSupport;
#endif
  1. 然后访问“服务”选项卡..取消链接统​​一项目->重新打开->再次链接项目

  2. 延迟 sdk 启动。相反,如果在 start() 或 awake() 上启动统一,请在 1-2 秒后在 update() 中执行。造成这种情况的原因与繁忙的线程有关,这不是很清楚,但确实有效

于 2022-02-05T07:42:52.957 回答