# 针对重度玩家减少广告频率

> Adjust ad frequency for specific player groups using Game Overrides and Remote Config.

## 场景##scenario

本文档介绍了如何通过示例游戏来展示以下方面：

* 如何在玩家的角色被淘汰（“死亡”）时展示广告。
* 如何定位重度玩家。
* 如何更改重度玩家看到广告的频率。（重度玩家是指过去七天每天都进入游戏的玩家。）

我们将通过一个名为“Platformer Microgame”的 Unity 项目进行演示，该演示适用于任何其他游戏。

## 要求##requirements

* Unity 2019.4 及更高版本
* Unity Ads\*
* Authentication
* Remote Config
* 登录 Unity Analytics Beta 版

**注意**：本示例中并不涵盖 Unity Ads。不过，您可以在预先创建的类中调用 ShowAd 函数。请参阅 [Unity 广告](https://unityads.unity3d.com/)。

## 说明##instructions

以下是步骤概述。下文会更详细地介绍每个步骤。

1. 安装 **Authentication、Remote Config** 和 **Analytics**。
2. 在 **Unity 编辑器**中将您的游戏关联至 Analytics。
3. 使用默认值设置 **Remote Config 键**。
4. 在游戏中从 Remote Config 检索值。
5. 确定何时显示广告。
6. 设置覆盖来为受众调整 Remote Config 键。

### 安装 Analytics、Authentication 和 Remote Config 软件包##install-analytics-authentication-and-remote-config-packages

登录 Unity Dashboard（Unity 后台）并找到此用例中所需的软件包（Analytics、Authentication 和 Remote Config）。


**Frame:**
![](/api/media?file=/game-overrides/media/images/download-package.png)

下载并安装每个软件包。将软件包直接添加到您项目的 PACKAGES 文件夹中。打开 manifest.json 文件并向依赖项中添加以下内容：

```plaintext
"com.unity.services.authentication": "1.0.0-pre.4",
"com.unity.services.analytics": "3.0.0-pre.2",
"com.unity.remote-config": "3.0.0-pre.3"
```

### 关联游戏##link-your-game

在 Unity 编辑器中，单击 **Edit（编辑）**> **Project Settings（项目设置）**> **Services（服务）**。选择相关项目并进行关联。这会将您的项目关联至后台。

### 设置 Remote Config 键##set-up-a-remote-config-key

设置 Remote Config 键有两种方式：通过后台或通过编辑器。

在 Unity Dashboard（Unity 后台）中，转到 Remote Config 的 **Config（配置）** 页面。您可以在侧边栏中的 **LiveOps** 下方找到该键。

要添加将面向重度玩家更改的配置键，请执行以下操作：

1. 单击 **Add Key（添加键）**。
2. 输入键名称 *adFrequency*。
3. 选择类型 *Int* 并输入值 1。
4. 单击 **Save（保存）**。

这将是适用于所有玩家的默认值。


**Frame:**
![](/api/media?file=/game-overrides/media/images/config-values.png)

您也可以在 Unity 编辑器中更新这些配置值。单击菜单栏中的 **Window（窗口）**，然后单击 **Remote Config**：它具有与 Dashboard（后台）相似的编辑面板。

### 设置游戏##setting-up-your-game

使用以下代码从 Remote Config 获取 adFrequency 数据。将此代码附加到场景中的空对象上。

```cs
using Unity.RemoteConfig;
using Unity.Services.Authentication;
using Unity.Services.Core;
using UnityEngine;
public class UGS : MonoBehaviour
{
 
    public struct userAttributes { }
    public struct appAttributes { }
 
    public int adFrequency = 1; //Default is 1 ad on death
 
    async void Start()
    {
 
        await UnityServices.InitializeAsync();
        // remote config requires authentication for managing environment information
        if (!AuthenticationService.Instance.IsSignedIn)
        {
            await AuthenticationService.Instance.SignInAnonymouslyAsync();
        }
        ConfigManager.FetchCompleted += ConfigManager_FetchCompleted;
        ConfigManager.FetchConfigs(new userAttributes(), new appAttributes());
    }
   
    void ConfigManager_FetchCompleted(ConfigResponse configResponse)
    {
 
        switch (configResponse.requestOrigin)
        {
            case ConfigOrigin.Default:
                Debug.Log("Default values will be returned");
                break;
            case ConfigOrigin.Cached:
                Debug.Log("Cached values loaded");
                break;
            case ConfigOrigin.Remote:
                Debug.Log("Remote Values loaded");
                adFrequency = ConfigManager.appConfig.GetInt("adFrequency");
                break;
        }
    }
}
```

加载时，该对象将初始化一个匿名用户。您现在从 Remote Config 中获得了 **adFrequency** 的配置值。

例如，如果将 *adFrequency* 的值更改为 3，那么您希望在玩家每死亡三次或未通过关卡时显示一次广告。

死亡逻辑会计算玩家死亡的次数。如果死亡计数等于设置好的频率，就会显示广告。如果不等于，就不会显示广告。

```cs
   countDeath++;
    if(ugs.adFrequency == countDeath)
    {
        countDeath = 0;
        PlayerPrefs.SetInt("countDeathForAds",countDeath);
        ads.ShowAd();
    }
```

### 设置覆盖##setting-up-an-override

按照上述步骤操作后，初始设置便已完成。

本示例的目标：创建一个面向重度玩家的覆盖，将 adFrequency 降低到每死亡三次显示一次广告。非重度玩家将继续在每次死亡时看到广告。

在 **Game Overrides** 中，转到 **Overview（概述）**，它位于侧边栏中的 **LiveOps** 下方。

1. 单击 **Create Override（创建覆盖）**。

2. 为您的覆盖输入 **name（名称）**，然后单击 **Next（下一步）**。

3. 单击 **Stateful Audiences（有状态受众）**，选择预定义的受众“Engaged Players”（重度玩家），然后单击 **Next（下一步）**。

   1. **注意**：要启用 Stateful Audiences（有状态受众），请确保安装了 Unity Analytics。

4. 单击 **Choose Content Type（选择内容类型）**，再选择 **Config Overrides（配置覆盖）**，然后单击 **Done（完成）**。

5. 从 **Key Name（键名称）** 下拉菜单中选择 **adFrequency**，输入值 **3**，然后单击 **Next（下一步）**。


   **Frame:**
   ![](/api/media?file=/game-overrides/media/images/ad-frequency.png)

6. 安排覆盖立即运行，持续时间无期限，优先级为中等，然后单击 **Finish（完成）**。您可以调整优先级以处理覆盖之间可能存在的冲突。

7. 核对更改并单击 **Enable（启用）**。

您的覆盖现在已经生效，重度玩家将在每死亡三次时收到一次广告。

如果您有任何疑问，请提交[支持工单](https://support.unity.com/)。
