[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CBHWN3HW9FZBP3VBQ5AYS5":3,"skill-same:01M6CBHWN3HW9FZBP3VBQ5AYS5":46},{"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":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":13,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M6CBHWN3HW9FZBP3VBQ5AYS5","13-inventory-settings",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\u002F50-mobile-package\u002F22-inventory-system\u002F13-inventory-settings\u002FSKILL.md",[],[18,19,20],"inventory","settings","13 inventory settings","2026-11-10 10:12:30",false,"# 13-inventory-settings\n\nStatus: ACTIVE\nAppliesTo: v10\n\n`InventorySettings`는 인벤토리 시스템의 설정 데이터를 보관하는 `ScriptableObject` 정본이다.\n저장 시 payload는 MobileApplication의 Crypto(AES)로 암호화되며, 런타임에서 복호화 후 사용한다.\n\n---\n\n## Class\n\n- 클래스: `InventorySettings : ScriptableObject`\n- 네임스페이스: `Devian`\n- 필드:\n  - `_settingsPayload: CString` — AES 암호화된 JSON payload\n- 기본값:\n  - 복호화 원문: `{\"maxStamina\":30,\"staminaIntervalSeconds\":300}`\n\n---\n\n## Asset Path (SSOT)\n\n- Resources 경로: `Devian\u002FInventorySettings`\n- 프로젝트 에셋 경로: `Assets\u002FResources\u002FDevian\u002FInventorySettings.asset`\n\n런타임 로드: `Resources.Load\u003CInventorySettings>(InventorySettings.ResourcesPath)`\n\n---\n\n## Settings Fields\n\n| Key | Type | Default | Description |\n|-----|------|---------|-------------|\n| `maxStamina` | int | 30 | 스태미나 최대치 |\n| `staminaIntervalSeconds` | int | 300 | 스태미나 1 회복 주기 (초) |\n\n런타임에서 InventoryManager는 설정 값을 `CInt`로 보관한다.\n\n---\n\n## Storage Contract\n\n`_settingsPayload(CString)`에는 아래 순서로 저장된다.\n\n1. 원본 데이터는 설정 JSON (`{\"maxStamina\":30,\"staminaIntervalSeconds\":300}`)\n2. `MobileApplication`의 Crypto key\u002Fiv로 AES 암호화\n3. 암호화 payload(string, base64)를 `CString`에 저장\n\n런타임 로딩 시:\n\n1. `CString`에서 payload 문자열을 읽는다\n2. `MobileApplication`에서 AES 복호화한다\n3. 복호화된 JSON을 파싱하여 설정 값을 읽는다\n\n---\n\n## Inspector (CustomEditor)\n\n`InventorySettingsEditor`는 설정 값을 편집한다.\n\n- `MaxStamina` — IntField (기본 30)\n- `StaminaIntervalSeconds` — IntField (기본 300)\n- 하단 `Save` 버튼으로 JSON 직렬화 → AES 암호화 → CString에 저장 → 에셋 디스크 저장\n- 암호화 key\u002Fiv는 `Assets\u002FResources\u002FDevian\u002FApplication.prefab`의 `MobileApplication` 컴포넌트에서 읽는다\n- key\u002Fiv 미설정 시 경고 메시지 표시 + 암호화 없이 저장\n\n---\n\n## Implementation Location (3-path mirror)\n\n> 3-path mirror 정책: [devian-unity\u002F04-package-policy](..\u002F..\u002F..\u002F04-package-policy\u002FSKILL.md)\n\n- InventorySettings:\n  - UPM (정본): `framework-cs\u002Fupm\u002Fcom.devian.foundation\u002FSamples~\u002FMobilePackage\u002FRuntime\u002FInventory\u002FInventorySettings.cs`\n  - Packages (sync): `framework-cs\u002Fapps\u002FUnityExample\u002FPackages\u002Fcom.devian.foundation\u002FSamples~\u002FMobilePackage\u002FRuntime\u002FInventory\u002FInventorySettings.cs`\n  - Assets\u002FSamples (import): `framework-cs\u002Fapps\u002FUnityExample\u002FAssets\u002FSamples\u002FDevian Samples\u002F{version}\u002FMobilePackage\u002FRuntime\u002FInventory\u002FInventorySettings.cs`\n- InventorySettingsEditor:\n  - UPM (정본): `framework-cs\u002Fupm\u002Fcom.devian.foundation\u002FSamples~\u002FMobilePackage\u002FEditor\u002FInventorySettingsEditor.cs`\n  - Packages (sync): `framework-cs\u002Fapps\u002FUnityExample\u002FPackages\u002Fcom.devian.foundation\u002FSamples~\u002FMobilePackage\u002FEditor\u002FInventorySettingsEditor.cs`\n  - Assets\u002FSamples (import): `framework-cs\u002Fapps\u002FUnityExample\u002FAssets\u002FSamples\u002FDevian Samples\u002F{version}\u002FMobilePackage\u002FEditor\u002FInventorySettingsEditor.cs`\n\n---\n\n## Related\n\n- [10-inventory-manager](..\u002F10-inventory-manager\u002FSKILL.md) — InventoryManager (설정 소비자)\n- [14-inventory-stamina-controller](..\u002F14-inventory-stamina-controller\u002FSKILL.md) — InventoryStaminaController (MaxStamina, StaminaInterval 사용)\n- [49-reward-system\u002F12-first-reward-settings](..\u002F..\u002F49-reward-system\u002F12-first-reward-settings\u002FSKILL.md) — 동일 패턴 (AES + CString)\n",{},"main","8cb5bd877a3a7004867d2f55697cb9e4ff2f1734","skills\u002Fdevian-unity\u002F50-mobile-package\u002F22-inventory-system\u002F13-inventory-settings","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":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add devwinsoft\u002Fdevian --skill 13-inventory-settings",{"tool":38,"command":39},"bunx","bunx skills add devwinsoft\u002Fdevian --skill 13-inventory-settings",{"tool":41,"command":42},"pnpm","pnpm dlx skills add devwinsoft\u002Fdevian --skill 13-inventory-settings","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F50-mobile-package\u002F22-inventory-system\u002F13-inventory-settings\u002FSKILL.md",true,[],[47,53,61,69,78,85],{"skillNo":48,"name":49,"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":50,"categories":51,"keywords":52,"publishedAt":21},"01M6CBX3K2JJV38ANHVGCAT8A0","devian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002FSKILL.md",[],[49],{"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":21},"01M6CBX210BFMM8AMN770J9WY8","90-project-archive","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F90-project-archive\u002FSKILL.md",[],[59,60],"archive","90 project archive",{"skillNo":62,"name":63,"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":64,"categories":65,"keywords":66,"publishedAt":21},"01M6CBWZSGRR9R3YJZB3177667","30-env-management","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F30-env-management\u002FSKILL.md",[],[67,68],"management","30 env management",{"skillNo":70,"name":71,"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":72,"categories":73,"keywords":74,"publishedAt":21},"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",[],[75,76,77],"push","page","19 page push send",{"skillNo":79,"name":80,"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":81,"categories":82,"keywords":83,"publishedAt":21},"01M6CBWWRQ05A7604GHJKTPJTF","18-page-savedata","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F18-page-savedata\u002FSKILL.md",[],[76,84],"18 page savedata",{"skillNo":86,"name":87,"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":88,"categories":89,"keywords":90,"publishedAt":21},"01M6CBWVH4S2VF1V7B2GBTESCT","17-page-deobfuscate","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F17-page-deobfuscate\u002FSKILL.md",[],[76,91],"17 page deobfuscate"]