|
| 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 | + <a href="README.ja.md">日本語</a> | |
| 6 | + <b>한국어</b> |
| 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 | +다음 세 가지 방법 중 하나로 이 플러그인을 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 | +- 플러그인에는 Unity의 코드 스트리핑 기능으로 인한 코드 제거를 방지하기 위해 `link.xml` 파일이 포함되어 있습니다. |
| 142 | +- `GetChannelName()` 메서드는 채널 정보를 캐시하여 설정 파일의 반복 읽기를 방지하고 성능을 향상시킵니다. |
0 commit comments