chinese unity integration guide new - unity-cn/unityads-help-cn GitHub Wiki

/*
Title: Unity 编辑器集成指南 Description: A guide to integrating Unity Ads in Unity
Sort: 11
*/

这篇指南中包含以下两种在Unity里集成UnityAds的方式。

  • 服务窗口(Services Window)方式。
  • 资源包(Asset Package)方式。

大纲

  • 设置 Build Targets
  • 使用Unity Ads
    • 服务窗口(Services Window)方式
    • 资源包(Asset Package)方式
  • 展示广告
  • 奖励玩家
    • 奖励按钮示例
  • 在Dashboard上管理设置

设置 Build Targets

在 Build Settings window 中配置一个支持的平台.

选择 iOS 或者 Android, 然后点击 Switch Platform.

The Build Settings window

使用Unity Ads

使用Services Window或者Asset Package的方式接入广告服务,所需的步骤略微有些不同。

服务窗口(Services Window)方式

为了开启广告服务,您需要为Unity Services对您的项目进行配置,需要设置(关联或新建)组织 Organization 和项目 Project Name。详细步骤请参考 配置服务(setting up Services).

Services配置好后,就可以开启Unity Ads了:

  1. 在Unity编辑器里开启服务窗口: 选择 Window > Services .
  2. 从服务列表里选择 Ads
  3. 点击开关来开启服务(如图所示)。
  4. 如果您的游戏在美国发布且专门供美国13岁以下的儿童使用,依据美国儿童隐私保护法,您需要点击COPPA勾选框 (一般的全年龄段游戏不需要勾选), 然后点击继续(Continue)。

Services Window

资源包(Asset Package)的方式

在上面使用服务窗口的方法里,由于关联了一个项目,所以它能读取到GameID从而为开发者进行初始化。使用Asset Package时,与Service Window唯一的区别是需要在源代码中传入GameID对UnityAds进行初始化。

获得 Unity Ads Game ID

  1. 使用UDN账户登录 UnityAds开发者操作台 > Projects, 选择已有的项目或者新建一个项目.

  2. 新建项目需填写项目信息.

    New a Project

  3. 选中一个项目 > Monetization > Platforms > GAME ID, 您可以看到Unity自动为iOS和Android平台分别生成的对应 GAME ID

    Locate your Game ID

更详细的如何创建和管理项目及平台,请参见《后台操作手册》

初始化Unity Ads

  1. 声明使用Unity Ads命名空间, UnityEngine.Advertisements (详见 UnityEngine.Advertisements ):

    using UnityEngine.Advertisements;
    
  2. 尽量在游戏生命周期的早期,如游戏开启时,使用前面取得的Game ID 初始化Unity Ads, gameId:

Advertisement.Initialize(string gameId)

注意: 通常需要尽早初始化UnityAds。比如在一个Start()方法里。

展示广告

  1. 声明使用Unity Ads命名空间, UnityEngine.Advertisements (详见 UnityEngine.Advertisements ):

    using UnityEngine.Advertisements;
    
  2. 调用 Show() 展示一个视频广告

    Advertisement.Show()
    

对看完视频的玩家给予奖励

对看完视频的玩家给与奖励,可以提高玩家的参与度,从而带来更高的收入。比如可以奖励游戏内货币,可消耗道具,额外生命,或者奖励翻倍等。

想要检查玩家是否完整观看完毕广告视频,可以使用ShowOptions的resultCallback属性,在展示视频的时候挂接一个callback方法,然后通过在这个callback方法里检查result等于ShowResult.Finished来保证玩家观看完整视频后才被给与奖励。

  1. 在脚本里,添加一个callback处理方法HandleShowResult。
  2. 把配置好resultCallback的ShowOptions作为参数传入 Show()方法。
  3. (可选) 如果想要广告视频不可被跳过,可以在调用Show()时同时指定不可被跳过的placement ID作为参数传入,如 “rewardedVideo” 。
void ShowRewardedVideo ()
{
    ShowOptions options = new ShowOptions();
	options.resultCallback = HandleShowResult;
	
	Advertisement.Show(rewardedVideo, options);
}

void HandleShowResult (ShowResult result)
{
	if(result == ShowResult.Finished) {
		Debug.Log("Video completed - Offer a reward to the player");
		// 奖励用户
		
	}else if(result == ShowResult.Skipped) {
		Debug.LogWarning("Video was skipped - Do NOT reward the player");
		
	}else if(result == ShowResult.Failed) {
		Debug.LogError("Video failed to show");
	}
}

一个奖励视频广告的按钮示例

使用下面代码来创建一个奖励视频广告的按钮。在有加载好的广告时,点击这个按钮会展示一个视频广告。

  1. 选择 Game Object > UI > Button 在您的 Scene里添加一个按钮。
  2. 选择刚刚添加的这个按钮,使用 Inspector 为其添加一个脚本组件(在 Inspector 面板选择 Add Component > New Script), 给脚本命名为 UnityAdsButton 以和类名保持一致。
  3. Open the script 并添加如下代码

注意: 如果您不是使用 Asset Package 方式集成,请记得删除掉标注在 ONLY NECESSARY FOR ASSET PACKAGE INTEGRATION 部分内的代码。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Advertisements;

[RequireComponent(typeof(Button))]
public class UnityAdsButton : MonoBehaviour
{
    //---------- ONLY NECESSARY FOR ASSET PACKAGE INTEGRATION: ----------//
	#if UNITY_IOS
	private string gameId = "1486551";
	#elif UNITY_ANDROID
	private string gameId = "1486550";
	#endif
//-------------------------------------------------------------------//
	
    Button m_Button;

    public string placementId = "rewardedVideo";

    void Start ()
    {	
        m_Button = GetComponent<Button>();
        if (m_Button) m_Button.onClick.AddListener(ShowAd);

        //---------- ONLY NECESSARY FOR ASSET PACKAGE INTEGRATION: ----------//

        if (Advertisement.isSupported) {
            Advertisement.Initialize (gameId, true);
        }

        //-------------------------------------------------------------------//

    }

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

    void ShowAd ()
    {
        ShowOptions options = new ShowOptions();
        options.resultCallback = HandleShowResult;

        Advertisement.Show(placementId, options);
    }

    void HandleShowResult (ShowResult result)
    {
        if(result == ShowResult.Finished) {
        Debug.Log("Video completed - Offer a reward to the player");

        }else if(result == ShowResult.Skipped) {
            Debug.LogWarning("Video was skipped - Do NOT reward the player");

        }else if(result == ShowResult.Failed) {
            Debug.LogError("Video failed to show");
        }
    }
}
  1. 在Unity编辑器里点击 Play 来测试是否集成成功。

欢迎加入Unity广告论坛查阅更多信息并与其他开发者互动。


在开发者控制台上管理Unity Ads的设置

在Unity Ads的开发者控制台上,可以针对平台,以及广告位层面调整一些设置。
更多操作截图请参见《后台操作手册》

  1. 使用UDN账户登录 UnityAds开发者操作台 > Projects, 选择一个项目.

    Unity Ads Dashboard with project selection highlighted

  2. 选择想要修改的平台 (iOS 或者 Android).

    Unity Ads Dashboard with platform selection highlighted

  3. 选择编辑一个广告位. (参见 广告位和广告过滤)

    Unity Ads Dashboard showing placement information

⚠️ **GitHub.com Fallback** ⚠️