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

Unity3D广告间隔控制:Objective-C代码转C#实现需求

Unity C# 实现同款广告间隔控制逻辑

没问题,我帮你把这段Objective-C的广告间隔控制逻辑转换成Unity适用的C#代码,先拆解下原代码的核心逻辑:

  • 第一次调用直接显示广告,同时标记“首次调用”状态为已完成
  • 后续每次调用时,检查距离上次尝试显示广告的时间间隔,如果小于60秒就跳过显示;如果间隔达标,更新时间戳后再显示广告
  • 不管是否触发广告显示,只要不是跳过的情况,都会更新上次尝试的时间戳(原OC代码里的变量名gCBLastFail有点误导,实际是记录每次尝试的时间,而非仅失败时)

下面是对应实现的C#代码,适配Unity的时间系统:

using UnityEngine;

// 建议把广告管理逻辑放在一个单例类里,方便全局调用
public class AdManager : MonoBehaviour
{
    // 记录上次尝试显示广告的时间(对应原OC的gCBLastFail)
    private static float _lastAdAttemptTime = -999f;
    // 标记是否是第一次调用广告(对应原OC的isFirssst,修正了拼写)
    private static bool _isFirstTime = true;
    // 广告冷却间隔,提取为常量方便后续修改
    private const float AdCooldownInterval = 60f;

    // 对外暴露的显示全屏广告方法
    public void ShowFullScreenAds()
    {
        // 使用Time.realtimeSinceStartup获取真实运行时间,不受游戏时间缩放(比如暂停)影响
        float currentTime = Time.realtimeSinceStartup;

        if (!_isFirstTime)
        {
            float timeSinceLastAttempt = currentTime - _lastAdAttemptTime;
            // 间隔不足60秒,直接返回不显示广告
            if (timeSinceLastAttempt < AdCooldownInterval)
            {
                return;
            }
        }

        // 更新上次尝试时间为当前时间
        _lastAdAttemptTime = currentTime;
        // 首次调用标记置为false
        _isFirstTime = false;

        // 调用实际的Google AdMob全屏广告显示方法
        ShowGoogleAdmobAds();
    }

    // 这里替换成你实际的AdMob全屏广告调用逻辑
    private void ShowGoogleAdmobAds()
    {
        // 示例:如果你用的是Google Mobile Ads插件,比如插屏广告的显示逻辑
        // InterstitialAd.Instance?.Show();
        Debug.Log("显示Google AdMob全屏广告");
    }
}

关键细节说明:

  • 用Time.realtimeSinceStartup替代OC的[NSDate timeIntervalSinceReferenceDate]:这个API返回的是游戏启动到当前的真实秒数,不会因为Time.timeScale设置为0(比如游戏暂停)而停止计时,更适合做广告间隔的时间判断
  • 静态变量_lastAdAttemptTime和_isFirstTime:保持了原OC中static变量的全局状态,跨方法调用、跨脚本实例(只要这个类被加载过)都能保留状态
  • 常量AdCooldownInterval:把60秒提取成常量,后续要调整间隔只需要修改这个值即可,不用改业务逻辑

使用提示:

  • 建议把AdManager做成单例,方便在游戏其他地方通过AdManager.Instance.ShowFullScreenAds()调用
  • ShowGoogleAdmobAds方法需要替换成你实际集成的Google AdMob代码,比如插屏广告、激励广告的显示逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:21:40