AGENT SKILL

12-asset-id

暂无简介

License 许可
MIT
所属仓库
devwinsoft/devian
最近更新
2026-04-12
Stars
★ 0
Forks
0

02 资源文件 5

03 SKILL.md 正文

12-asset-id

Status: ACTIVE AppliesTo: v10 Type: Component Specification

1. 목적

Unity Editor에서 특정 폴더의 prefab 목록을 스캔하여, Inspector에서 string 기반 ID를 선택할 수 있도록 하는 AssetId 패턴을 정의한다.

  • TableId 패턴과 동일한 UX (Select 버튼 + 검색 + 그리드 선택, 클릭 즉시 적용)
  • 폴더 경로는 BundleSettings(Assets/Resources/Devian/BundleSettings.asset) 에서 공급받는다.
  • deprecated/fallback 레이어는 만들지 않는다.

2. 네임스페이스

모든 코드는 namespace Devian.


3. 패키지

  • selector base 클래스는 com.devian.foundation (Editor)
  • runtime ID 타입과 Generated selector는 해당 owning package에 둔다

4. 파일 위치 (정본)

Editor (base — com.devian.foundation):

com.devian.foundation/Editor/AssetId/
├── BaseEditorAssetIdSelector.cs
└── BaseEditorScriptableAssetIdSelector.cs

Settings (단일 정본):

  • Assets/Resources/Devian/BundleSettings.asset (JSON 형태 금지)
  • com.devian.foundation/Runtime/Unity/Settings/BundleSettings.cs

Runtime ID 타입 + Generated selector는 owning package 기준:

{owning-package}/Runtime/{Feature}/
└── {ASSET}_ID.cs
{owning-package}/Editor/Generated/
└── {ASSET}_ID.Editor.cs

Parent:

  • skills/devian-unity/20-common-package/00-overview/SKILL.md
  • skills/devian-unity/20-common-package/18-bundle-settings/SKILL.md

5. SearchDir 공급 규약(Hard)

Selector는 BundleSettings.asset에서 key로 SearchDir를 찾는다.

  • BundleSettings.GetEntry(key)로 조회 (key = ID 타입명, e.g. COMMON_EFFECT_ID)
  • 매칭 실패 시 "Assets" fallback (최후 수단)

AssetId key는 단일 SearchDir(string) 만 지원한다.


6. Selector Window 표시 규약 (Hard)

  • Drawer는 Select 버튼 클릭 시 반드시 Selector 창을 화면에 표시해야 한다.
  • Selector 창에는 Apply/Create 버튼이 존재하면 안 된다. (SSOT: skills/devian/10-module/03-ssot/SKILL.md)
  • 따라서 Selector는 EditorWindow(Utility) 기반으로 생성/표시한다.
  • Selector 캐싱은 금지한다. (창을 닫았다가 다시 Select 시 창이 안 뜨는 버그 방지)
  • CreateInstance 후 반드시 ShowUtility() 로 표시 상태로 만들어야 한다.

권장 패턴(정본):

protected override TSelector GetSelector()
{
    var w = ScriptableObject.CreateInstance<TSelector>();
    w.ShowUtility();
    return w;
}

NOTE: 기존 "ScriptableWizard 기반/DisplayWizard 강제" 문구는 SSOT의 "Apply 버튼 금지"와 충돌하므로 제거한다.


7. 금지(Hard)

  • deprecated/fallback settings 추가/유지 금지 (예: AssetIdSearchSettings)
  • BundleSettings.json 형태 금지 (.asset 단일 정본)
  • Selector 캐싱 금지 (창을 닫았다가 다시 Select 시 창이 안 뜨는 버그 방지)
  • @로 시작하는 prefab name은 목록에서 제외한다. (AssetManager 정책과 일치)
  • ID 값은 prefab.name 그대로 저장한다.
  • Apply 버튼 금지: 선택 리스트(SelectionGrid)에서 항목을 클릭하는 즉시 Value가 적용되고, Selector 창은 자동으로 닫혀야 한다.

04 同仓库更多 Skills