[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CBFB24Q0K7SS6QMEX5KFS4":3,"skill-same:01M6CBFB24Q0K7SS6QMEX5KFS4":52},{"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":27,"linkOnly":28,"markdownContent":29,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":13,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M6CBFB24Q0K7SS6QMEX5KFS4","14-ui-component-red-dot",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\u002F20-ui-components\u002F14-ui-component-red-dot\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[23,24,25,26],"component","ui","dot","14 ui component red dot","2026-11-10 10:12:30",false,"# 14-ui-component-red-dot\n\nStatus: ACTIVE\nAppliesTo: v11\n\n## Overview\n\n`RedDotManager` 상태를 `UnityEngine.UI.Image.enabled`에 바인딩하는 UI 플러그인.\n`UIComponentBase` 초기화 시 현재 red dot 상태를 즉시 반영하고, 이후 key 변경 이벤트를 구독한다.\n\n---\n\n## SSOT\n\n### Code Path\n\n```text\nframework-cs\u002Fupm\u002Fcom.devian.foundation\u002FSamples~\u002FUIPackage\u002FRuntime\u002FComponent\u002FUIComponentRedDot.cs\n```\n\n### Serialized Fields\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `_redDotKey` | `string` | `RedDotManager` 조회\u002F구독 key |\n\n### Required Component\n\n- `Image` (`RequireComponent(typeof(Image))`)\n\n---\n\n## Lifecycle\n\n| Event | Action |\n|-------|--------|\n| `onAwake()` | self `Image` 캐시 |\n| `onInit(Canvas)` | key가 비어 있으면 `enabled=false` 후 종료. 아니면 `RedDotManager.Instance.IsOn(key)`로 초기 동기화 후 `Subcribe(GetEntityId(), key, ...)` |\n| `onPoolDespawned()` | `RedDotManager.Instance.UnSubcribe(GetEntityId())` — respawn 전 중복 구독 방지 |\n| `onDestroy()` | `RedDotManager.Instance.UnSubcribe(GetEntityId())` |\n\n### Handler\n\n- `onRedDotChanged(RedDotChanged changed)`:\n  `_image.enabled = changed.IsOn`\n\n---\n\n## Policy\n\n- 이 컴포넌트는 `Image.enabled`만 제어한다.\n- `gameObject.SetActive`, alpha\u002Fcolor, 애니메이션, badge count는 담당하지 않는다.\n- host scene\u002Fprefab은 `RedDotManager` singleton을 포함해야 한다.\n- 구독 replay가 없으므로 `onInit(Canvas)`에서 `IsOn()` 선조회 후 subscribe 순서를 유지한다.\n- ownerKey는 `UnityEngine.EntityId` (`GetEntityId()`)를 사용한다.\n\n---\n\n## Dependencies\n\n| Dependency | Location |\n|------------|----------|\n| `UIComponentBase` | `com.devian.foundation\u002FSamples~\u002FUIPackage\u002FRuntime\u002FComponent\u002FUIComponentBase.cs` |\n| `Image` | `UnityEngine.UI` |\n| `RedDotManager` | `com.devian.foundation\u002FSamples~\u002FGamePackage\u002FRuntime\u002FRedDot\u002FRedDotManager.cs` |\n| `RedDotChanged` | `com.devian.foundation\u002FSamples~\u002FGamePackage\u002FRuntime\u002FRedDot\u002FRedDotChanged.cs` |\n\n---\n\n## Related\n\n- Parent: [00-overview](..\u002F00-overview\u002FSKILL.md)\n- Base: [10-ui-component-base](..\u002F10-ui-component-base\u002FSKILL.md)\n- Red dot: [21-game-package\u002F14-red-dot-system\u002F10-red-dot-manager](..\u002F..\u002F..\u002F21-game-package\u002F14-red-dot-system\u002F10-red-dot-manager\u002FSKILL.md)\n",{},"main","8cb5bd877a3a7004867d2f55697cb9e4ff2f1734","skills\u002Fdevian-unity\u002F23-ui-package\u002F20-ui-components\u002F14-ui-component-red-dot","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":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add devwinsoft\u002Fdevian --skill 14-ui-component-red-dot",{"tool":44,"command":45},"bunx","bunx skills add devwinsoft\u002Fdevian --skill 14-ui-component-red-dot",{"tool":47,"command":48},"pnpm","pnpm dlx skills add devwinsoft\u002Fdevian --skill 14-ui-component-red-dot","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F23-ui-package\u002F20-ui-components\u002F14-ui-component-red-dot\u002FSKILL.md",true,[],[53,59,67,75,84,91],{"skillNo":54,"name":55,"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":56,"categories":57,"keywords":58,"publishedAt":27},"01M6CBX3K2JJV38ANHVGCAT8A0","devian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002FSKILL.md",[],[55],{"skillNo":60,"name":61,"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":62,"categories":63,"keywords":64,"publishedAt":27},"01M6CBX210BFMM8AMN770J9WY8","90-project-archive","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F90-project-archive\u002FSKILL.md",[],[65,66],"archive","90 project archive",{"skillNo":68,"name":69,"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":70,"categories":71,"keywords":72,"publishedAt":27},"01M6CBWZSGRR9R3YJZB3177667","30-env-management","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F30-env-management\u002FSKILL.md",[],[73,74],"management","30 env management",{"skillNo":76,"name":77,"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":78,"categories":79,"keywords":80,"publishedAt":27},"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",[],[81,82,83],"push","page","19 page push send",{"skillNo":85,"name":86,"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":87,"categories":88,"keywords":89,"publishedAt":27},"01M6CBWWRQ05A7604GHJKTPJTF","18-page-savedata","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F18-page-savedata\u002FSKILL.md",[],[82,90],"18 page savedata",{"skillNo":92,"name":93,"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":94,"categories":95,"keywords":96,"publishedAt":27},"01M6CBWVH4S2VF1V7B2GBTESCT","17-page-deobfuscate","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F17-page-deobfuscate\u002FSKILL.md",[],[82,97],"17 page deobfuscate"]