Skip to content

Latest commit

 

History

History
155 lines (108 loc) · 5.94 KB

File metadata and controls

155 lines (108 loc) · 5.94 KB

GameFrameX Logo

Unity 多平台渠道号获取

Version Unity License Documentation

独立游戏前后端一体化解决方案 · 独立游戏开发者的圆梦大使

📖 文档🚀 快速开始💬 QQ群: 467608841


🌐 语言: English | 简体中文 | 繁體中文 | 日本語 | 한국어


本插件用于在 Unity 项目中获取多平台的分发渠道号(支持 iOS、tvOS、visionOS、Android、Editor、PC、WebGL、UWP 和主机平台)。它是 https://github.com/GameFrameX/GameFrameX 项目的一个子模块。

主要功能

  • 多平台支持:iOS、tvOS、visionOS、Android、Editor、PC(Windows/Mac/Linux)、WebGL、UWP、PS4、PS5、Xbox One、Nintendo Switch。
  • 提供简单的 API 来获取预设的渠道信息。
  • iOS 平台在构建时自动在 Info.plist 中添加默认渠道号(如果未设置)。

安装

您可以通过以下三种方式将此插件添加到您的 Unity 项目中:

  1. 通过 manifest.json 添加依赖: 在项目 Packages 目录下的 manifest.json 文件的 dependencies 节点中添加如下内容:

    {
      "dependencies": {
        "com.gameframex.unity.getchannel": "https://github.com/gameframex/com.gameframex.unity.getchannel.git",
        // ... 其他依赖
      }
    }
  2. 通过 Unity Package Manager 使用 Git URL: 在 Unity 编辑器中,打开 Window -> Package Manager。 点击左上角的 + 号按钮,选择 Add package from git URL...。 输入以下 URL 并点击 Add:

    https://github.com/gameframex/com.gameframex.unity.getchannel.git
    
  3. 直接下载或克隆仓库: 将此仓库下载或克隆到您 Unity 项目的 Packages 目录下。Unity 会自动识别并加载该插件。

使用方法

1. 获取渠道号

在您的 C# 脚本中,使用 BlankGetChannel.GetChannelName(string key) 方法来获取渠道号。参数 key 是您在对应平台设置渠道号时使用的键名。

示例代码:

using UnityEngine;

public class MyGameScript : MonoBehaviour
{
    void Start()
    {
        // 获取默认渠道号(键名为 "channel")
        string channel = BlankGetChannel.GetChannelName();
        Debug.Log("当前渠道号: " + channel);

        // 获取指定键的渠道号
        string customChannel = BlankGetChannel.GetChannelName("channelName");
        Debug.Log("自定义渠道号: " + customChannel);

        // 获取渠道号,并指定默认值
        string subChannel = BlankGetChannel.GetChannelName("sub_channel", "unknown");
        Debug.Log("子渠道号: " + subChannel);
    }
}

2. iOS / tvOS / visionOS 平台设置

对于 iOS、tvOS 和 visionOS 平台,插件包含一个构建后处理器 (PostProcessBuildHandler.cs)。如果在构建时项目的 Info.plist 文件中:

  • 没有 名为 channel 的键,该脚本会自动添加一个键为 channel,值为 default 的条目。
  • 已经存在 名为 channel 的键,则不会进行任何修改。

您可以在 Xcode 项目的 Info.plist 文件中修改 channel 的值,或者在调用 BlankGetChannel.GetChannelName() 时使用您自定义的键名(确保该键名存在于 Info.plist 中)。

Info.plist 配置示例:

<key>channel</key>
<string>ios_cn_taptap</string>

<key>sub_channel</key>
<string>beta</string>

3. Android 平台设置

对于 Android 平台,您需要在 AndroidManifest.xml 文件中定义渠道信息。通常,这是通过在 <application> 标签内添加 <meta-data> 标签来完成的。

例如,如果您想使用键名 channel 和值为 android_cn_taptap

<application ...>
    <activity ...>
        ...
    </activity>

    <meta-data
        android:name="channel"
        android:value="android_cn_taptap" />

    <meta-data
        android:name="sub_channel"
        android:value="beta" />

    <!-- 其他 meta-data -->
</application>

然后,您可以在 C# 代码中通过 BlankGetChannel.GetChannelName("channel") 来获取这个值。

4. Editor / PC / WebGL / UWP / 主机平台设置

对于 Editor、PC(Windows/Mac/Linux)、WebGL、UWP、PS4、PS5、Xbox One、Nintendo Switch 等平台,您需要在 Unity 项目的 Resources 文件夹下创建一个名为 application_config.txt 的文本文件。

application_config.txt 文件格式示例:

channel=editor_cn_test
sub_channel=beta
other_key=other_value

每行格式为:键名=值

插件会自动读取该文件中的键值对,并缓存起来供后续使用。

注意事项

  • 确保您在调用 BlankGetChannel.GetChannelName(string key) 时使用的 key 与您在对应平台的配置文件中设置的键名一致:
    • iOS / tvOS / visionOSInfo.plist 文件
    • AndroidAndroidManifest.xml 文件中的 <meta-data> 标签
    • Editor / PC / WebGL / UWP / 主机平台Resources/application_config.txt 文件
  • 插件包含 link.xml 文件以防止代码被 Unity 的代码裁剪功能移除。
  • GetChannelName() 方法会缓存渠道信息,避免重复读取配置文件,提高性能。