《Cocos Creator游戏实战》微信小游戏激励视频接入步骤及音乐中断恢复

本文详细介绍微信小游戏激励视频广告的接入步骤,包括获取广告位ID、创建节点、编写代码等,同时解决音乐中断问题,确保用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信小游戏激励视频接入步骤及音乐中断恢复

获取广告位ID

创建节点

编写代码


笔者之前已经在接入微信小游戏广告这篇文章中详细讲解了Banner广告接入步骤以及一些广告接入的注意点。在这篇教程中,我们将来看下如何接入激励视频广告。

运行效果如下:

Cocos Creator版本:2.2.2

后台回复"激励视频",获取该项目完整文件:

获取广告位ID

首先我们要去微信小游戏后台创建一个激励视频广告位,并获取广告位ID:

关于广告位的新建步骤笔者这里就不详述了,大家可以去看下这篇文章:接入微信小游戏广告

点击右边的获取代码,我们就可以看到官方给我们的代码了,现在让我们来看下如何在项目中进行使用。

创建节点

1. bg为Sprite类型节点,作为背景。

2. video btn是一个按钮节点,用于呼出激励视频。

3. board节点用于显示激励视频的奖励结果,默认隐藏,只有等用户关闭激励视频后才会显示。文本内容显示在ad result子节点上(Label类型),close btn子节点用于再次隐藏board节点。

编写代码

新建一个Video.js脚本,在properties中添加两个属性:

// Video.js
properties: {
    bgAudio: {
        default: null,
        type: cc.AudioClip
    },

    adResult: cc.Label
},

1. bgAduio是背景音乐。

2. adResult用来显示用户关闭广告后的奖励情况文本。

onLoad方法编写如下:

// Video.js
onLoad () {
    this.videoAd = null;                // 激励视频广告
    this.initVideoAd();                 // 初始化
    this.playMusic();                   // 播放背景音乐
},

1. 首先创建一个this.videoAd变量。

2. 在initVideoAd方法中进行初始化,其中就用到了官方给我们的一段代码:

initVideoAd() {
    if (typeof wx === 'undefined') {
        return;
    }

    // 创建激励视频广告实例,提前初始化
    this.videoAd = wx.createRewardedVideoAd({
        adUnitId: '这里放你自己的广告位ID'
    });

    this.videoAd .onError(err => {
        console.log('激励视频展示失败');
        console.log(err);

        this.adResult.string = '激励视频展示失败';
        this.adResult.node.parent.active = true;
    });

    this.videoAd.onClose(res => {
        // 用户点击了【关闭广告】按钮
        // 小于 2.1.0 的基础库版本,res 是一个 undefined
        if (res && res.isEnded || res === undefined) {
            // 正常播放结束,可以下发游戏奖励
            console.log('奖励已经发放');

            this.adResult.string = '奖励已经发放';
            this.adResult.node.parent.active = true;
        }
        else {
            // 提前关闭广告,不发放奖励
            console.log('因播放中途退出,所以不下发游戏奖励');

            this.adResult.string = '因播放中途退出,所以不下发游戏奖励';
            this.adResult.node.parent.active = true;
        }

        cc.audioEngine.pauseMusic();            // 先强制暂停
        cc.audioEngine.resumeMusic();           // 再恢复播放音乐 
    });
},

除了放入官方给我们的代码,我们还要实现onError和onClose。前者用来适配广告视频播放失败的情况,后者用来判定在广告被关闭后是否给玩家发放奖励。具体可以参考官方文档

如果玩家在广告正常播放结束后才关闭广告,那么我们就给玩家发放奖励(开发者需根据自身项目情况在这编写相应代码),笔者这里就只是在屏幕上显示'奖励已经发放'这个文本。

this.adResult.string = '奖励已经发放';
this.adResult.node.parent.active = true;

注:广告被关闭存在两种情况。第一,广告未播放结束玩家就提前关闭。第二,广告播放完毕后玩家才关闭。

广告关闭后的另一个重要操作就是恢复音乐播放。这时候我们必须先强制暂停音乐,再调用resumeMusic恢复音乐播放。单单调用第二句代码是没有效果的。

cc.audioEngine.pauseMusic();            // 先强制暂停
cc.audioEngine.resumeMusic();           // 再恢复播放音乐

3. 接下来是playMusic方法:

// Video.js
playMusic () {
    // 循环播放背景音乐
    cc.audioEngine.playMusic(this.bgAudio, true);
    cc.audioEngine.setMusicVolume(0.6);
},

很简单,就是循环播放背景音乐并设置了音量大小。

最后是showVideoAd方法,该方法将作为video btn按钮节点的事件函数,用于呼出视频广告:

// Video.js
showVideoAd() {
    if (!this.videoAd) {
        return;
    }

    // 用户触发广告后,显示激励视频广告
    this.videoAd.show().catch(() => {
        // 失败重试
        this.videoAd.load()
        .then(() => videoAd.show())
        .catch(err => {
            console.log(err);
            console.log('激励视频 广告显示失败');

            this.adResult.string = '激励视频 广告显示失败';
            this.adResult.node.parent.active = true;
        })
    });
},

就是官方的代码,笔者只是加了两行代码将失败提示显示到了屏幕上。

要了解更多关于广告接入的细节就去看下这篇文章吧:接入微信小游戏广告

那本节教程就到这,祝大家有所收获~

### Cocos Creator 微信小程序 原生广告集成 #### 创建和初始化原生广告组件 为了在Cocos Creator开发的微信小游戏中集成原生广告,首先需要创建并初始化原生广告组件。这一步骤类似于其他类型的广告设置,但具体实现有所不同。 ```javascript // Common.js 文件中的定义部分 export = { nativeAd: null, } ``` 当游戏启动或特定场景触发时,应当实例化`wx.createNativeAd()`来获取原生广告对象,并将其赋值给之前声明的对象属性[^1]: ```javascript if (cc.sys.platform === cc.sys.WECHAT_GAME) { this.nativeAd = wx.createNativeAd({ adUnitId: 'your_native_ad_unit_id', style: { left: 0, top: 0, width: 300 // 设置宽度适应不同设备分辨率 } }); try { await this.nativeAd.load(); console.log('native ad loaded'); const view = this.nativeAd.createView(); // 创建视图容器 // 添加到节点树中显示出来 cc.find('Canvas').addChild(view); // 可选配置项调整样式位置大小等参数 view.style.left = 50; view.style.top = 50; view.style.width = 250; } catch (error) { console.error('Failed to load or display the native ad:', error.message); } } ``` #### 处理生命周期事件 对于任何类型的广告来说,在其整个生命期内处理好各种状态变化都是非常重要的。针对原生广告也不例外,应该监听诸如加载完成、点击以及关闭之类的事件以便做出相应反应[^3]。 ```javascript this.nativeAd.onLoad(() => { console.log('The native advertisement has been successfully loaded.'); }); this.nativeAd.onError(error => { console.warn(`Error occurred while loading native ads:${JSON.stringify(error)}`); }); this.nativeAd.onResize(size => { console.info(`Size of the displayed native ad changed to ${size.width}x${size.height}px`); }); ``` 通过以上方式可以在Cocos Creator构建的游戏项目里顺利集成本地化的微信小游戏平台提供的原生广告服务功能[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

la_vie_est_belle

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值