【问题标题】:Handle Button interactivity for Ads in Unity在 Unity 中处理广告的按钮交互性
【发布时间】:2021-05-16 11:30:55
【问题描述】:

我在我的应用程序中使用 Unity Ads。一切正常,但我想添加一个功能,在整个应用生命周期内处理广告按钮交互,无论广告是否准备就绪。

我编写的最简单的解决方案是在 update() 方法中检查广告的可用性:

public class AdButton : MonoBehaviour
{
    // Some stuff here

    void Update()
    {
        if (myButton)
            myButton.interactable = Advertisement.IsReady(placementId);
    }
}

但我也考虑过使用Actions 事件:

public class AdsManager : MonoBehaviour
{
    public static event Action<bool> AdReady;

    // Some stuff here

    void update()
    {
        adReady?.invoke(Advertisement.isReady(placementId));
    }
}
public class AdButton : MonoBehaviour
{
    // Some stuff here

    void OnEnable()
    {
        AdsManager.AdReady += RefreshButton;
    }

    void RefreshButton(bool interactivity)
    {
        myButton.interactable = interactivity
    }

    void OnDisable()
    {
        AdsManager.AdReady -= RefreshButton;
    }
}

问题是我是 Unity 的新手,我对 update() 方法有点害怕。我一直在阅读,由于该函数的性质(每帧调用一次),很容易使应用程序过载。

我应该担心这些代码行还是调用每一帧这些指令不会减慢我的应用程序?

感谢您的帮助。

西莫

【问题讨论】:

    标签: c# unity3d ads


    【解决方案1】:

    我的建议是使用 Action 方法,这是我过去采用的方法,例如:

    private Action onAdReadyListener;
    
    public void RegisterOnReadyListener(Action onAdReadyListener)
    {
        this.onAdReadyListener = onAdReadyListener;
    
        if (Advertisement.IsReady(myPlacementId))
        {
            onAdReadyListener?.Invoke();
        }
    }
    
    public void OnUnityAdsReady(string placementId)
    {
        if (placementId == myPlacementId)
        {
            onAdReadyListener?.Invoke();
        }
    }
    

    OnUnityAdsReady() 是 UnityAds 包提供的覆盖方法。当准备好查看广告时调用它。

    这里的想法是注册一个侦听器,将Action 作为参数传递给RegisterOnReadyListener() 方法并将其存储为成员变量。

    如果广告立即准备就绪,则将立即调用 Action。如果广告没有立即准备好,则在 UnityAds 包调用 OnUnityAdsReady() 回调时将调用 Action

    每次观看广告时OnUnityAdsReady() 都会在准备好观看下一个广告时调用。这意味着每次广告准备就绪时都会调用Action

    关于这个主题的一些提示:

    • Unity 限制在生产环境中每天显示 25 个广告。
    • Android 对您展示广告的方式非常严格,例如明确 用户即将看到一个广告,但每次展示的广告不超过 1 个 “屏幕”
    • 如果您在生产环境中观看自己的广告次数过多,您的 帐户将被阻止。你可以 控制是否从 Unity 仪表板显示测试广告或生产广告 为您的项目。此选项会覆盖您在代码中拥有的任何测试选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多