{"id":21358836,"url":"https://github.com/gameframex/com.gameframex.unity.ui.ugui","last_synced_at":"2026-03-05T14:07:58.168Z","repository":{"id":255341153,"uuid":"849274194","full_name":"GameFrameX/com.gameframex.unity.ui.ugui","owner":"GameFrameX","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-25T11:31:25.000Z","size":87,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-25T12:29:05.761Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GameFrameX.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-29T09:52:06.000Z","updated_at":"2025-06-25T11:31:28.000Z","dependencies_parsed_at":"2024-11-30T09:24:01.684Z","dependency_job_id":"0e69e6b4-4d9a-467e-bb3c-0e845da8f194","html_url":"https://github.com/GameFrameX/com.gameframex.unity.ui.ugui","commit_stats":null,"previous_names":["gameframex/com.gameframex.unity.ui.ugui"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/GameFrameX/com.gameframex.unity.ui.ugui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.ui.ugui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.ui.ugui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.ui.ugui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.ui.ugui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GameFrameX","download_url":"https://codeload.github.com/GameFrameX/com.gameframex.unity.ui.ugui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.ui.ugui/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269669096,"owners_count":24456600,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T05:22:35.124Z","updated_at":"2026-03-05T14:07:58.088Z","avatar_url":"https://github.com/GameFrameX.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Game Frame X UI UGUI\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Unity](https://img.shields.io/badge/Unity-2019.4+-green.svg)](https://unity3d.com)\n[![Version](https://img.shields.io/badge/version-2.0.0-orange.svg)](package.json)\n\n独立游戏前后端一体化解决方案，独立游戏开发者的圆梦大使。\n\nGame Frame X UGUI 组件 - Unity UI功能包，提供UGUI组件的封装，使UGUI组件的使用更加简单高效。\n\n## 📖 文档\n\n- [官方文档](https://gameframex.doc.alianblank.com)\n- [GitHub仓库](https://github.com/gameframex/com.gameframex.unity.ui.ugui)\n\n## ✨ 特性\n\n### 🎯 核心功能\n\n- **UGUI组件封装**: 提供对Unity UGUI组件的高级封装\n- **UI管理器**: 完整的UI界面管理系统\n- **代码生成器**: 自动生成UI代码，提高开发效率\n- **扩展方法**: 丰富的UGUI组件扩展方法\n- **表单辅助**: UI表单创建和管理辅助工具\n\n### 🛠️ 主要组件\n\n#### UI管理系统\n- `UIManager`: 界面管理器，负责UI的打开、关闭和生命周期管理\n- `UGUI`: 抽象UI基类，提供UI显示状态控制\n- `UGUIFormHelper`: UI表单辅助器，处理UI实例化和创建\n\n#### 扩展功能\n- `UGUIButtonExtension`: Button组件扩展方法\n- `UGUIImageExtension`: Image组件扩展方法\n- `RectTransformExtension`: RectTransform扩展方法\n- `UIImage`: 增强的Image组件，支持异步图片加载\n\n#### 编辑器工具\n- `UGUICodeGenerator`: UGUI代码生成器\n- `UGUIComponentInspector`: UGUI组件检查器\n- `UIImageReplaceHandler`: UI图片替换处理器\n\n## 📦 安装\n\n### 依赖项\n\n```json\n{\n  \"com.gameframex.unity\": \"1.1.1\",\n  \"com.gameframex.unity.ui\": \"1.0.0\",\n  \"com.gameframex.unity.asset\": \"1.0.6\",\n  \"com.gameframex.unity.event\": \"1.0.0\"\n}\n```\n\n### 使用方式(任选其一)\n\n1. **Package Manager (推荐)**\n   - 打开Unity编辑器\n   - 打开Package Manager窗口\n   - 点击\"+\"按钮，选择\"Add package from git URL\"\n   - 输入：`https://github.com/gameframex/com.gameframex.unity.ui.ugui.git`\n\n2. **manifest.json**\n   - 直接在 `manifest.json` 的文件中的 `dependencies` 节点下添加以下内容\n   ```json\n   {\"com.gameframex.unity.ui.ugui\": \"https://github.com/gameframex/com.gameframex.unity.ui.ugui.git\"}\n   ```\n\n3. **本地安装**\n   - 直接下载仓库放置到Unity项目的`Packages`目录下，会自动加载识别\n\n## 🚀 快速开始\n\n### 1. 基本UI类创建\n\n```csharp\nusing GameFrameX.UI.UGUI.Runtime;\nusing UnityEngine;\n\npublic class MainMenuUI : UGUI\n{\n    protected override void OnInit(object userData)\n    {\n        base.OnInit(userData);\n        // 初始化UI逻辑\n    }\n    \n    protected override void OnOpen(object userData)\n    {\n        base.OnOpen(userData);\n        // UI打开时的逻辑\n    }\n    \n    protected override void OnClose(bool isShutdown, object userData)\n    {\n        base.OnClose(isShutdown, userData);\n        // UI关闭时的逻辑\n    }\n}\n```\n\n### 2. 使用扩展方法\n\n```csharp\nusing GameFrameX.UI.UGUI.Runtime;\nusing UnityEngine.UI;\n\npublic class UIController : MonoBehaviour\n{\n    [SerializeField] private Button startButton;\n    [SerializeField] private Image iconImage;\n    [SerializeField] private RectTransform panel;\n    \n    void Start()\n    {\n        // 按钮扩展方法\n        startButton.onClick.Add(OnStartButtonClick);\n        \n        // 图片扩展方法\n        iconImage.SetIcon(\"UI/Icons/StartIcon\");\n        \n        // RectTransform扩展方法\n        panel.MakeFullScreen();\n    }\n    \n    private void OnStartButtonClick()\n    {\n        Debug.Log(\"Start button clicked!\");\n    }\n}\n```\n\n### 3. 使用代码生成器\n\n1. 在Hierarchy中选择一个UGUI预制体\n2. 右键选择 `GameObject/UI/Generate UGUI Code(生成UGUI代码)`\n3. 代码将自动生成到 `Assets/Hotfix/UI/UGUI/` 目录下\n\n### 4. 使用UIImage组件\n\n```csharp\nusing GameFrameX.UI.UGUI.Runtime;\n\npublic class IconDisplay : MonoBehaviour\n{\n    [SerializeField] private UIImage iconImage;\n    \n    void Start()\n    {\n        // 设置图标，支持异步加载\n        iconImage.icon = \"UI/Icons/PlayerAvatar\";\n    }\n}\n```\n\n## 📋 API参考\n\n### UGUI基类\n\n```csharp\npublic abstract class UGUI : UIForm\n{\n    // 设置UI显示状态\n    protected override void InternalSetVisible(bool value);\n    \n    // 获取或设置UI可见性\n    public override bool Visible { get; protected set; }\n}\n```\n\n### 扩展方法\n\n#### Button扩展\n```csharp\npublic static class UGUIButtonExtension\n{\n    // 添加点击事件\n    public static void Add(this Button.ButtonClickedEvent self, UnityAction action);\n    \n    // 移除点击事件\n    public static void Remove(this Button.ButtonClickedEvent self, UnityAction action);\n    \n    // 清除所有点击事件\n    public static void Clear(this Button.ButtonClickedEvent self);\n    \n    // 设置点击事件（清除后设置）\n    public static void Set(this Button.ButtonClickedEvent self, UnityAction action);\n}\n```\n\n#### Image扩展\n```csharp\npublic static class UGUIImageExtension\n{\n    // 异步设置图标\n    public static async void SetIcon(this UnityEngine.UI.Image self, string icon);\n}\n```\n\n#### RectTransform扩展\n```csharp\npublic static class RectTransformExtension\n{\n    // 设置为全屏\n    public static void MakeFullScreen(this RectTransform rectTransform);\n}\n```\n\n## 🔧 配置\n\n### 代码生成器配置\n\n代码生成器会自动扫描实现了 `IUGUIGeneratorCodeConvertTypeHandler` 接口的处理器，并按优先级排序执行。\n\n```csharp\npublic interface IUGUIGeneratorCodeConvertTypeHandler\n{\n    int Priority { get; }  // 优先级，数值越小优先级越高\n    // 其他接口方法...\n}\n```\n\n## 🤝 贡献\n\n欢迎提交Issue和Pull Request来帮助改进这个项目。\n\n## 📄 许可证\n\n本项目主要遵循 MIT 许可证和 Apache 许可证（版本 2.0）进行分发和使用。\n\n## 👥 作者\n\n- **Blank** - [alianblank@outlook.com](mailto:alianblank@outlook.com)\n- 项目主页: [https://gameframex.doc.alianblank.com](https://gameframex.doc.alianblank.com)\n\n## 🔗 相关链接\n\n- [Game Frame X 主框架](https://github.com/gameframex/com.gameframex.unity)\n- [Game Frame X UI 基础包](https://github.com/gameframex/com.gameframex.unity.ui)\n- [Game Frame X 资源管理](https://github.com/gameframex/com.gameframex.unity.asset)\n- [Game Frame X 事件系统](https://github.com/gameframex/com.gameframex.unity.event)\n\n---\n\n**注意**: 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动！任何基于本项目二次开发而产生的一切法律纠纷和责任，我们不承担任何责任！","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgameframex%2Fcom.gameframex.unity.ui.ugui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgameframex%2Fcom.gameframex.unity.ui.ugui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgameframex%2Fcom.gameframex.unity.ui.ugui/lists"}