|
| 1 | +<div align="center"> |
| 2 | + <a href="README.md">English</a> | |
| 3 | + <a href="README.zh-CN.md">简体中文</a> | |
| 4 | + <a href="README.zh-TW.md">繁體中文</a> | |
| 5 | + <b>日本語</b> | |
| 6 | + <a href="README.ko.md">한국어</a> |
| 7 | +</div> |
| 8 | + |
| 9 | +# Unity マルチプラットフォームチャンネル取得 |
| 10 | + |
| 11 | +このプラグインは、Unity プロジェクトでマルチプラットフォームの配信チャンネル識別子を取得するために使用されます(iOS、tvOS、visionOS、Android、Editor、PC、WebGL、UWP、コンソールプラットフォームに対応)。`https://github.com/GameFrameX/GameFrameX` プロジェクトのサブモジュールです。 |
| 12 | + |
| 13 | +## 機能 |
| 14 | + |
| 15 | +- **マルチプラットフォーム対応**:iOS、tvOS、visionOS、Android、Editor、PC(Windows/Mac/Linux)、WebGL、UWP、PS4、PS5、Xbox One、Nintendo Switch。 |
| 16 | +- プリセットされたチャンネル情報を取得するためのシンプルな API を提供。 |
| 17 | +- iOS プラットフォームでは、ビルド時に `Info.plist` にデフォルトチャンネルを自動追加(未設定の場合)。 |
| 18 | + |
| 19 | +## インストール |
| 20 | + |
| 21 | +以下の3つの方法で、このプラグインを Unity プロジェクトに追加できます: |
| 22 | + |
| 23 | +1. **`manifest.json` 経由で追加:** |
| 24 | + プロジェクトの `Packages` ディレクトリにある `manifest.json` ファイルの `dependencies` ノードに以下を追加してください: |
| 25 | + ```json |
| 26 | + { |
| 27 | + "dependencies": { |
| 28 | + "com.gameframex.unity.getchannel": "https://github.com/gameframex/com.gameframex.unity.getchannel.git", |
| 29 | + // ... その他の依存関係 |
| 30 | + } |
| 31 | + } |
| 32 | + ``` |
| 33 | + |
| 34 | +2. **Unity Package Manager で Git URL を使用:** |
| 35 | + Unity エディタで `Window -> Package Manager` を開きます。 |
| 36 | + 左上の `+` ボタンをクリックし、`Add package from git URL...` を選択します。 |
| 37 | + 以下の URL を入力して `Add` をクリックしてください: |
| 38 | + ``` |
| 39 | + https://github.com/gameframex/com.gameframex.unity.getchannel.git |
| 40 | + ``` |
| 41 | + |
| 42 | +3. **リポジトリのダウンロードまたはクローン:** |
| 43 | + このリポジトリを Unity プロジェクトの `Packages` ディレクトリにダウンロードまたはクローンしてください。Unity が自動的に認識してプラグインを読み込みます。 |
| 44 | + |
| 45 | +## 使用方法 |
| 46 | + |
| 47 | +### 1. チャンネル情報の取得 |
| 48 | + |
| 49 | +C# スクリプトで、`BlankGetChannel.GetChannelName(string key)` メソッドを使用してチャンネル情報を取得します。`key` パラメータは、対応プラットフォームでチャンネル情報を設定した際のキー名です。 |
| 50 | + |
| 51 | +**サンプルコード:** |
| 52 | + |
| 53 | +```csharp |
| 54 | +using UnityEngine; |
| 55 | + |
| 56 | +public class MyGameScript : MonoBehaviour |
| 57 | +{ |
| 58 | + void Start() |
| 59 | + { |
| 60 | + // デフォルトチャンネルを取得(キー名は "channel") |
| 61 | + string channel = BlankGetChannel.GetChannelName(); |
| 62 | + Debug.Log("現在のチャンネル: " + channel); |
| 63 | + |
| 64 | + // 特定のキーでチャンネルを取得 |
| 65 | + string customChannel = BlankGetChannel.GetChannelName("channelName"); |
| 66 | + Debug.Log("カスタムチャンネル: " + customChannel); |
| 67 | + |
| 68 | + // デフォルト値を指定してチャンネルを取得 |
| 69 | + string subChannel = BlankGetChannel.GetChannelName("sub_channel", "unknown"); |
| 70 | + Debug.Log("サブチャンネル: " + subChannel); |
| 71 | + } |
| 72 | +} |
| 73 | +``` |
| 74 | + |
| 75 | +### 2. iOS / tvOS / visionOS プラットフォーム設定 |
| 76 | + |
| 77 | +iOS、tvOS、visionOS プラットフォームでは、プラグインにビルド後処理 (`PostProcessBuildHandler.cs`) が含まれています。ビルド時、プロジェクトの `Info.plist` ファイルに: |
| 78 | +- `channel` という名前のキーが **ない** 場合、スクリプトは自動的にキー `channel`、値 `default` のエントリを追加します。 |
| 79 | +- `channel` という名前のキーが **すでに存在する** 場合、変更は行われません。 |
| 80 | + |
| 81 | +Xcode プロジェクトの `Info.plist` ファイルで `channel` の値を変更するか、`BlankGetChannel.GetChannelName()` を呼び出す際にカスタムキー名を使用してください(そのキー名が `Info.plist` に存在することを確認してください)。 |
| 82 | + |
| 83 | +**Info.plist 設定例:** |
| 84 | + |
| 85 | +```xml |
| 86 | +<key>channel</key> |
| 87 | +<string>ios_cn_taptap</string> |
| 88 | + |
| 89 | +<key>sub_channel</key> |
| 90 | +<string>beta</string> |
| 91 | +``` |
| 92 | + |
| 93 | +### 3. Android プラットフォーム設定 |
| 94 | + |
| 95 | +Android プラットフォームでは、`AndroidManifest.xml` ファイルでチャンネル情報を定義する必要があります。通常、`<application>` タグ内に `<meta-data>` タグを追加して行います。 |
| 96 | + |
| 97 | +例えば、キー名 `channel`、値 `android_cn_taptap` を使用する場合: |
| 98 | + |
| 99 | +```xml |
| 100 | +<application ...> |
| 101 | + <activity ...> |
| 102 | + ... |
| 103 | + </activity> |
| 104 | + |
| 105 | + <meta-data |
| 106 | + android:name="channel" |
| 107 | + android:value="android_cn_taptap" /> |
| 108 | + |
| 109 | + <meta-data |
| 110 | + android:name="sub_channel" |
| 111 | + android:value="beta" /> |
| 112 | + |
| 113 | + <!-- その他の meta-data --> |
| 114 | +</application> |
| 115 | +``` |
| 116 | + |
| 117 | +その後、C# コードで `BlankGetChannel.GetChannelName("channel")` を使用してこの値を取得できます。 |
| 118 | + |
| 119 | +### 4. Editor / PC / WebGL / UWP / コンソールプラットフォーム設定 |
| 120 | + |
| 121 | +Editor、PC(Windows/Mac/Linux)、WebGL、UWP、PS4、PS5、Xbox One、Nintendo Switch などのプラットフォームでは、Unity プロジェクトの `Resources` フォルダに `app_info.txt` という名前のテキストファイルを作成する必要があります。 |
| 122 | + |
| 123 | +**app_info.txt ファイル形式の例:** |
| 124 | + |
| 125 | +``` |
| 126 | +channel=editor_cn_test |
| 127 | +sub_channel=beta |
| 128 | +other_key=other_value |
| 129 | +``` |
| 130 | + |
| 131 | +各行の形式:`キー名=値` |
| 132 | + |
| 133 | +プラグインはこのファイルからキーと値のペアを自動的に読み取り、後続の使用のためにキャッシュします。 |
| 134 | + |
| 135 | +## 注意事項 |
| 136 | + |
| 137 | +- `BlankGetChannel.GetChannelName(string key)` を呼び出す際、使用する `key` が対応プラットフォームの設定ファイルで設定したキー名と一致していることを確認してください: |
| 138 | + - **iOS / tvOS / visionOS**:`Info.plist` ファイル |
| 139 | + - **Android**:`AndroidManifest.xml` ファイルの `<meta-data>` タグ |
| 140 | + - **Editor / PC / WebGL / UWP / コンソールプラットフォーム**:`Resources/app_info.txt` ファイル |
| 141 | +- プラグインには `link.xml` ファイルが含まれており、Unity のコードストリッピング機能によるコード削除を防ぎます。 |
| 142 | +- `GetChannelName()` メソッドはチャンネル情報をキャッシュし、設定ファイルの繰り返し読み込みを回避してパフォーマンスを向上させます。 |
0 commit comments