|
| 1 | +<div align="center"> |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +# GameFrameX UI FairyGUI |
| 6 | + |
| 7 | +[](https://github.com/gameframex/com.gameframex.unity.ui.fairygui/releases) |
| 8 | +[](LICENSE.md) |
| 9 | +[](https://gameframex.doc.alianblank.com) |
| 10 | + |
| 11 | +**インディゲーム開発者向けオールインワンソリューション · インディ開発者の夢を支援** |
| 12 | + |
| 13 | +[📖 ドキュメント](https://gameframex.doc.alianblank.com) • [🚀 クイックスタート](#クイックスタート) • [💬 QQグループ: 612311526](https://jq.qq.com/?_wv=1027&k=5HXWqCg) |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +🌐 **言語**: [English](README.md) | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | **日本語** | [한국어](README.ko.md) |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +</div> |
| 22 | + |
| 23 | +## プロジェクト概要 |
| 24 | + |
| 25 | +GameFrameX UI FairyGUI は、[FairyGUI](https://www.fairygui.com/) フレームワークを GameFrameX モジュラーゲームフレームワークに統合する Unity UI アダプターです。YooAsset による非同期アセットローディングで、完全な UI ライフサイクル管理(オープン/クローズ/リサイクル/アニメーション)を提供します。 |
| 26 | + |
| 27 | +### 主な機能 |
| 28 | + |
| 29 | +- **完全な UI ライフサイクル** — 統一 API による UI フォームのオープン、クローズ、リサイクル、アニメーション |
| 30 | +- **非同期アセットローディング** — YooAsset ベースの FairyGUI パッケージとリソースの非同期ローディング |
| 31 | +- **オブジェクトプール再利用** — UI フォームインスタンスをプールして再利用し、GC アロケーションを最小化 |
| 32 | +- **シングルトン重複排除** — 同一フォームの重複作成を自動防止 |
| 33 | +- **ローディングキュー** — 同一フォームへの同時オープンリクエストを統合 |
| 34 | +- **属性駆動設定** — C# 属性で UI グループ、表示/非表示アニメーションを制御 |
| 35 | +- **MVVM バインディングサポート** — `BindablePropertyExtension` によるバインディングプロパティイベントの自動クリーンアップ |
| 36 | +- **デュアルアセットローディング** — `Resources.Load` と YooAsset AssetBundle ローディングの両方をサポート |
| 37 | +- **IL2CPP 対応** — Preserve 属性により IL2CPP ビルド時のコードストリッピングを防止 |
| 38 | + |
| 39 | +## アーキテクチャ |
| 40 | + |
| 41 | +``` |
| 42 | +┌─────────────────────────────────────────────┐ |
| 43 | +│ あなたの UI パネル (FUI) │ |
| 44 | +├─────────────────────────────────────────────┤ |
| 45 | +│ UIManager │ |
| 46 | +│ (オープン / クローズ / リサイクル / │ |
| 47 | +│ ローディングキュー) │ |
| 48 | +├──────────┬──────────┬───────────────────────┤ |
| 49 | +│ FormHelper│UIGroup │ PackageComponent │ |
| 50 | +│ (作成/ │Helper │ (パッケージ追加 / │ |
| 51 | +│ 解放) │(深度) │ パッケージ削除) │ |
| 52 | +├──────────┴──────────┴───────────────────────┤ |
| 53 | +│ FairyGUI Runtime + YooAsset │ |
| 54 | +└─────────────────────────────────────────────┘ |
| 55 | +``` |
| 56 | + |
| 57 | +| コンポーネント | 説明 | |
| 58 | +|---------------|------| |
| 59 | +| `UIManager` | オープン/クローズ/リサイクルライフサイクルを管理する UI マネージャー | |
| 60 | +| `FUI` | すべての FairyGUI パネルの基底クラス — これを継承して UI を作成 | |
| 61 | +| `FairyGUIPackageComponent` | MonoBehaviour。FairyGUI パッケージの読み込み/アンロードを管理 | |
| 62 | +| `FairyGUIFormHelper` | フォームのインスタンス化、作成、解放を処理 | |
| 63 | +| `FairyGUIUIGroupHelper` | UI グループの深度とレイヤー管理 | |
| 64 | +| `FairyGUILoadAsyncResourceHelper` | FairyGUI のリソースリクエストを YooAsset に橋渡し | |
| 65 | +| `FairyGUIPathFinderHelper` | パスベースの GObject 検索ユーティリティ | |
| 66 | + |
| 67 | +## クイックスタート |
| 68 | + |
| 69 | +### インストール |
| 70 | + |
| 71 | +以下のいずれかの方法を選択してください: |
| 72 | + |
| 73 | +**方法 1: manifest.json** |
| 74 | + |
| 75 | +プロジェクトの `Packages/manifest.json` の `dependencies` に追加: |
| 76 | + |
| 77 | +```json |
| 78 | +{ |
| 79 | + "com.gameframex.unity.ui.fairygui": "https://github.com/AlianBlank/com.gameframex.unity.ui.fairygui.git" |
| 80 | +} |
| 81 | +``` |
| 82 | + |
| 83 | +**方法 2: Unity Package Manager(Git URL)** |
| 84 | + |
| 85 | +Unity Package Manager を開き、Git URL から追加: |
| 86 | + |
| 87 | +``` |
| 88 | +https://github.com/gameframex/com.gameframex.unity.ui.fairygui.git |
| 89 | +``` |
| 90 | + |
| 91 | +**方法 3: 手動インストール** |
| 92 | + |
| 93 | +リポジトリをダウンロードして Unity プロジェクトの `Packages/` ディレクトリに配置します。Unity が自動的に認識します。 |
| 94 | + |
| 95 | +### 依存関係 |
| 96 | + |
| 97 | +| パッケージ | バージョン | 説明 | |
| 98 | +|-----------|-----------|------| |
| 99 | +| `com.gameframex.unity` | ≥ 1.1.1 | コアフレームワークランタイム | |
| 100 | +| `com.gameframex.unity.ui` | ≥ 1.0.0 | 基本 UI 抽象レイヤー | |
| 101 | +| `com.gameframex.unity.asset` | ≥ 1.0.6 | アセットローディングシステム | |
| 102 | +| `com.gameframex.unity.event` | ≥ 1.0.0 | イベントシステム | |
| 103 | +| FairyGUI Runtime | — | FairyGUI ライブラリ | |
| 104 | +| YooAsset | — | アセット管理 | |
| 105 | +| UniTask | — | 非同期/await サポート | |
| 106 | + |
| 107 | +### 基本的な使い方 |
| 108 | + |
| 109 | +1. **`FairyGUIPackageComponent` をシーンに追加**(`GameFrameX → FairyGUIPackage` メニューから) |
| 110 | + |
| 111 | +2. **`FUI` を継承して UI パネルを作成**: |
| 112 | + |
| 113 | +```csharp |
| 114 | +using GameFrameX.UI.FairyGUI.Runtime; |
| 115 | + |
| 116 | +[OptionUIGroup("Default")] |
| 117 | +public class MyPanel : FUI |
| 118 | +{ |
| 119 | + protected override void OnInit() |
| 120 | + { |
| 121 | + // UI 要素の初期化 |
| 122 | + } |
| 123 | + |
| 124 | + protected override void OnOpen(object userData) |
| 125 | + { |
| 126 | + // オープン時の処理 |
| 127 | + } |
| 128 | + |
| 129 | + protected override void OnClose() |
| 130 | + { |
| 131 | + // クローズ時の処理 |
| 132 | + } |
| 133 | +} |
| 134 | +``` |
| 135 | + |
| 136 | +3. **フレームワークの UI コンポーネントからパネルを開く**: |
| 137 | + |
| 138 | +```csharp |
| 139 | +// UI パネルを非同期でオープン |
| 140 | +await GameEntry.GetComponent<UIComponent>().OpenUIFormAsync("MyPackage", "MyPanel"); |
| 141 | +``` |
| 142 | + |
| 143 | +## 使用例 |
| 144 | + |
| 145 | +### 表示/非表示アニメーション |
| 146 | + |
| 147 | +属性でアニメーションを設定: |
| 148 | + |
| 149 | +```csharp |
| 150 | +[OptionUIShowAnimation(typeof(FadeInAnimation))] |
| 151 | +[OptionUIHideAnimation(typeof(FadeOutAnimation))] |
| 152 | +public class AnimatedPanel : FUI { } |
| 153 | +``` |
| 154 | + |
| 155 | +### パスベースのオブジェクト検索 |
| 156 | + |
| 157 | +```csharp |
| 158 | +// GObject の階層パスを取得 |
| 159 | +string path = gObject.GetUIPath(); |
| 160 | + |
| 161 | +// パスから GObject を解決 |
| 162 | +GObject obj = FairyGUIPathFinderHelper.GetUIFromPath("GRoot/Group/MyButton"); |
| 163 | +``` |
| 164 | + |
| 165 | +### MVVM バインディング自動クリーンアップ |
| 166 | + |
| 167 | +```csharp |
| 168 | +// GObject 破棄時に自動的にイベントを登録解除 |
| 169 | +myProperty.ClearWithGObjectDestroyed(gObject); |
| 170 | +``` |
| 171 | + |
| 172 | +## プラットフォーム対応 |
| 173 | + |
| 174 | +| プラットフォーム | 対応 | |
| 175 | +|----------------|------| |
| 176 | +| Android | ✅ | |
| 177 | +| iOS | ✅ | |
| 178 | +| Windows | ✅ | |
| 179 | +| macOS | ✅ | |
| 180 | +| WebGL | ✅ | |
| 181 | + |
| 182 | +Unity 最低バージョン:**2019.4** |
| 183 | + |
| 184 | +## ドキュメントとリソース |
| 185 | + |
| 186 | +- [GameFrameX ドキュメント](https://gameframex.doc.alianblank.com) |
| 187 | +- [FairyGUI ドキュメント](https://www.fairygui.com/docs) |
| 188 | +- [変更履歴](CHANGELOG.md) |
| 189 | +- [ライセンス](LICENSE.md)(MIT + Apache 2.0) |
| 190 | + |
| 191 | +## コミュニティとサポート |
| 192 | + |
| 193 | +- **QQグループ**:[612311526](https://jq.qq.com/?_wv=1027&k=5HXWqCg) |
| 194 | +- **GitHub Issues**:[バグ報告](https://github.com/gameframex/com.gameframex.unity.ui.fairygui/issues) |
| 195 | +- **作者**:Blank ([alianblank@outlook.com](mailto:alianblank@outlook.com)) |
| 196 | + |
| 197 | +## 変更履歴 |
| 198 | + |
| 199 | +[CHANGELOG.md](CHANGELOG.md) をご覧ください。 |
| 200 | + |
| 201 | +## ライセンス |
| 202 | + |
| 203 | +本プロジェクトは [MIT ライセンス](https://opensource.org/licenses/MIT) と [Apache 2.0 ライセンス](http://www.apache.org/licenses/LICENSE-2.0) のデュアルライセンスです。詳細は [LICENSE.md](LICENSE.md) をご覧ください。 |
0 commit comments