[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CBDNJ2R6GPXAFEF4W0FHV6":3,"skill-same:01M6CBDNJ2R6GPXAFEF4W0FHV6":51},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":13,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M6CBDNJ2R6GPXAFEF4W0FHV6","33-ui-message-system",null,"devwinsoft\u002Fdevian","devwinsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22570160?v=4","01M6C6RR8W05NH8NPKQNCE3Q72","maoshy","01M6C6RRDJ5TJJCZXRTY801YDH",0,"MIT","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F23-ui-package\u002F10-base-system\u002F33-ui-message-system\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[23,24,25],"ui","system","33 ui message system","2026-11-10 10:12:30",false,"# UIMessageSystem\n\nStatus: ACTIVE\nAppliesTo: v11\n\n---\n\n## Overview\n\n### Purpose\n\nUI 전용 메시지 시스템.\n`BaseTrigger\u003CEntityId, UI_MESSAGE>`를 특화한 인스턴스 클래스이며,\n`UIManager.messageSystem` 정적 프로퍼티를 통해 단일 인스턴스에 접근한다.\n\n### Terms\n\n| Term | Definition |\n|------|------------|\n| **UIMessageSystem** | `BaseTrigger\u003CEntityId, UI_MESSAGE>` 특화 클래스 |\n| **UI_MESSAGE** | UI 메시지 키 enum (`None`, `InitOnce`, `ReloadText`, `Resize`) |\n| **EntityId** | `UnityEngine.EntityId`. ownerKey로 사용 (`GetEntityId()` 반환값) |\n\n---\n\n## SSOT\n\n### Code Path\n\n```\nframework-cs\u002Fupm\u002Fcom.devian.foundation\u002FSamples~\u002FUIPackage\u002FRuntime\u002FBase\u002FUIMessageSystem.cs\n```\n\n### Source\n\n```csharp\nnamespace Devian\n{\n    public enum UI_MESSAGE\n    {\n        None,\n        InitOnce,\n        ReloadText,\n        Resize,\n    }\n\n    public class UIMessageSystem : BaseTrigger\u003CEntityId, UI_MESSAGE>\n    {\n    }\n}\n```\n\n### Owner\n\n`UIManager`가 메시지 시스템 인스턴스를 내부 필드로 소유한다.\n\n```csharp\nprivate UIMessageSystem mMessageSystem = new UIMessageSystem();\npublic static UIMessageSystem messageSystem => Instance?.mMessageSystem;\n```\n\n---\n\n## API\n\n`BaseTrigger\u003CTOwnerKey, TMsgKey>` 인스턴스 API를 그대로 상속한다.\n\n| Method | Description |\n|--------|-------------|\n| `Subcribe(EntityId owner, UI_MESSAGE key, Handler handler)` | 메시지 핸들러 등록 |\n| `SubcribeOnce(EntityId owner, UI_MESSAGE key, Action\u003Cobject[]> handler)` | 1회성 핸들러 등록 |\n| `UnSubcribe(EntityId owner)` | owner에 등록된 모든 핸들러 제거 |\n| `Notify(UI_MESSAGE key, params object[] args)` | 메시지 발행 |\n| `ClearAll()` | 전체 핸들러 초기화 |\n\n### UI_MESSAGE Values\n\n| Value | Purpose |\n|-------|---------|\n| `None` | 기본값 |\n| `InitOnce` | `UIBaseCanvas.Init()` 완료 후 1회 발행 |\n| `ReloadText` | 텍스트 리로드 요청 |\n| `Resize` | UI 리사이즈 통지 |\n\n### Notify Timing\n\n`UIBaseCanvas.Init()` 마지막 단계에서 `UIManager.messageSystem.Notify(UI_MESSAGE.InitOnce)`가 호출된다.\n\n### Behavior Notes\n\n- ownerKey 기반 메시지 시스템이다\n- `BaseTrigger` 구현은 notify 중 `Subcribe \u002F UnSubcribe \u002F ClearAll` 재진입을 허용한다\n- `UIComponentText`는 `InitOnce`와 `ReloadText`를 직접 사용하는 대표 사례다\n\n---\n\n## Dependencies\n\n| Dependency | Location |\n|------------|----------|\n| `BaseTrigger\u003CTOwnerKey, TMsgKey>` | `framework-cs\u002Fupm\u002Fcom.devian.foundation\u002FSamples~\u002FCommonPackage\u002FRuntime\u002FUnity\u002FBaseTrigger\u002FBaseTrigger.cs` |\n| `UIManager` | `framework-cs\u002Fupm\u002Fcom.devian.foundation\u002FSamples~\u002FUIPackage\u002FRuntime\u002FBase\u002FUIManager.cs` |\n| `UnityEngine.EntityId` | Unity 내장 |\n\n---\n\n## Reference\n\n- **BaseTrigger**: [25-trigger\u002FSKILL.md](..\u002F..\u002F..\u002F20-common-package\u002F25-trigger\u002FSKILL.md)\n- **UIManager**: [10-ui-manager\u002FSKILL.md](..\u002F10-ui-manager\u002FSKILL.md)\n",{},"main","8cb5bd877a3a7004867d2f55697cb9e4ff2f1734","skills\u002Fdevian-unity\u002F23-ui-package\u002F10-base-system\u002F33-ui-message-system","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft","Kim Hyong Joon","2026-04-12 18:44:10",{"source":7,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add devwinsoft\u002Fdevian --skill 33-ui-message-system",{"tool":43,"command":44},"bunx","bunx skills add devwinsoft\u002Fdevian --skill 33-ui-message-system",{"tool":46,"command":47},"pnpm","pnpm dlx skills add devwinsoft\u002Fdevian --skill 33-ui-message-system","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F23-ui-package\u002F10-base-system\u002F33-ui-message-system\u002FSKILL.md",true,[],[52,58,66,74,83,90],{"skillNo":53,"name":54,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":26},"01M6CBX3K2JJV38ANHVGCAT8A0","devian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002FSKILL.md",[],[54],{"skillNo":59,"name":60,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":26},"01M6CBX210BFMM8AMN770J9WY8","90-project-archive","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F90-project-archive\u002FSKILL.md",[],[64,65],"archive","90 project archive",{"skillNo":67,"name":68,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":26},"01M6CBWZSGRR9R3YJZB3177667","30-env-management","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F30-env-management\u002FSKILL.md",[],[72,73],"management","30 env management",{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":26},"01M6CBWYD3TGWBQV7V35551THF","19-page-push-send","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F19-page-push-send\u002FSKILL.md",[],[80,81,82],"push","page","19 page push send",{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":26},"01M6CBWWRQ05A7604GHJKTPJTF","18-page-savedata","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F18-page-savedata\u002FSKILL.md",[],[81,89],"18 page savedata",{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":26},"01M6CBWVH4S2VF1V7B2GBTESCT","17-page-deobfuscate","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F17-page-deobfuscate\u002FSKILL.md",[],[81,96],"17 page deobfuscate"]