Auto-attaches to all Assets/_Game/** file operations. Contains: prefix table, directory rules, Addressables group/label mapping, required editor tools, and hard rules. References full specs in Docs/Standards/ for detail. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
127 lines
5.2 KiB
Markdown
127 lines
5.2 KiB
Markdown
---
|
|
description: "Use when creating, moving, renaming, or placing any Unity game assets, ScriptableObjects, Prefabs, scenes, art, audio, or scripts under Assets/_Game/. Also use when writing Addressables group/label assignments or AddressKeys.cs constants. Enforces Docs/Standards/AssetFolderSpec.md and Docs/Standards/AddressablesLabelSpec.md."
|
|
applyTo: "Assets/_Game/**"
|
|
---
|
|
|
|
# Asset Standards Enforcement
|
|
|
|
Full specifications:
|
|
- Naming, directories, Addressables: `Docs/Standards/AssetFolderSpec.md`
|
|
- Addressable labels & groups: `Docs/Standards/AddressablesLabelSpec.md`
|
|
|
|
When in doubt, **READ THE SPEC FILE** before deciding a path or name.
|
|
|
|
---
|
|
|
|
## Asset Naming Prefix Table
|
|
|
|
| Prefix | System | Example |
|
|
|--------|--------|---------|
|
|
| `PLY_` | Player | `PLY_Player.prefab`, `PLY_Player01.mat` |
|
|
| `ENM_` | Enemy | `ENM_GruntWarrior.prefab`, `ENM_E001_Stats.asset` |
|
|
| `WPN_` | Weapon | `WPN_SkyBlade.prefab`, `WPN_SkyBlade_Data.asset` |
|
|
| `SKL_` | Skill | `SKL_DashSlash_Data.asset` |
|
|
| `SPL_` | Spell | `SPL_Fireball.asset` |
|
|
| `CHM_` | Charm | `CHM_IronSkin.asset` |
|
|
| `PROJ_` | Projectile | `PROJ_Arrow.prefab` |
|
|
| `VFX_` | VFX | `VFX_HitSpark.prefab` |
|
|
| `COL_` | Collectible | `COL_HPOrb.prefab` |
|
|
| `UI_` | UI Prefab | `UI_HUD.prefab` |
|
|
| `SYS_` | Persistent Manager | `SYS_GameManager.prefab` |
|
|
| `ENV_` | Environment Structure | `ENV_Tilemap_Ground.prefab` |
|
|
| `WLD_` | World Object | `WLD_Chest.prefab` |
|
|
| `EVT_` | Event Channel SO | `EVT_PlayerDied.asset` |
|
|
| `CMB_` | Combat SO | `CMB_DamageSource_Sword.asset` |
|
|
| `MAP_` | Map data | `MAP_RoomData_Forest_01.asset` |
|
|
| `AUD_BGM_` | BGM audio | `AUD_BGM_Forest.asset` |
|
|
| `AUD_SFX_` | SFX audio | `AUD_SFX_HitImpact.asset` |
|
|
| `ABL_` | Ability | `ABL_DoubleJump.asset` |
|
|
| `SET_` | Settings | `SET_GlobalSettings.asset` |
|
|
|
|
---
|
|
|
|
## Key Directory Rules
|
|
|
|
| Asset Type | Must Go In |
|
|
|-----------|-----------|
|
|
| Sprite / Texture | `_Game/Art/Characters/…`, `_Game/Art/Effects/…`, `_Game/Art/UI/…` |
|
|
| AnimationClip / Controller | Same `…/{ID}/Animations/` folder as sprites |
|
|
| Material `.mat` | Same `…/{ID}/Materials/` folder as sprites |
|
|
| Sprite Atlas | `…/{ID}/Atlases/` subfolder beside its sprites |
|
|
| ScriptableObject `.asset` | `_Game/Data/{module}/` (never inside `Prefabs/` or `Art/`) |
|
|
| Event Channel SO | `_Game/Data/Events/{module}/` |
|
|
| Prefab (player/enemy/vfx/etc.) | `_Game/Prefabs/{category}/` |
|
|
| Scene | `_Game/Scenes/` (test scenes → `Scenes/Testings/`) |
|
|
| Shader Graph | `_Game/Shaders/BaseASE/{category}/` |
|
|
| HLSL include | `_Game/Shaders/Includes/` |
|
|
| UXML / USS | `_Game/UI Toolkit/Layouts/` or `Styles/` |
|
|
| Skill SO | `_Game/Data/Progression/Skills/` |
|
|
| Weapon SO | `_Game/Data/Combat/Weapons/` |
|
|
| Charm SO | `_Game/Data/Progression/Charms/` |
|
|
| Config SO (dynamic) | `_Game/Data/Settings/` or `_Game/Data/{module}/` |
|
|
|
|
---
|
|
|
|
## Addressables Group Assignment
|
|
|
|
| Address Prefix | Group |
|
|
|---------------|-------|
|
|
| `Scene_` | `Scenes` |
|
|
| `PLY_`, `WPN_` | `Player` |
|
|
| `ENM_` | `Enemies` |
|
|
| `PROJ_` | `Projectiles` |
|
|
| `VFX_` | `VFX_Common` |
|
|
| `UI_` | `UI` |
|
|
| `COL_` | `Collectibles` |
|
|
| `CHM_`, `Config/` | `Config` |
|
|
| `AUD_` | `Audio_Music` |
|
|
| `Room_{Region}_*` | `Room_{Region}` (dynamic) |
|
|
| `Boss_{Name}` | `Boss_{Name}` (dynamic) |
|
|
|
|
## Addressables Label Assignment
|
|
|
|
| Address Prefix | Labels |
|
|
|---------------|--------|
|
|
| `PLY_` | `Preload` |
|
|
| `WPN_` | `Weapon`, `Preload` |
|
|
| `ENM_` | `Enemy` |
|
|
| `PROJ_` | `Poolable`, `Preload` |
|
|
| `VFX_` | `Poolable`, `Preload` |
|
|
| `COL_` | `Poolable`, `Preload` |
|
|
| `CHM_` | `Charms` |
|
|
| `Config/` | `Config` |
|
|
| `AUD_BGM_` | `BGM` |
|
|
| `AUD_SFX_` | `SFX` |
|
|
| `Scene_MainMenu` | `Preload` (exact override) |
|
|
| `UI_FloatingDamageText` | `Poolable`, `Preload` (exact override) |
|
|
|
|
---
|
|
|
|
## Required: Use Editor Tools
|
|
|
|
Never create assets manually in Project window. Always use the editor tools:
|
|
|
|
| Asset to Create | Tool | Menu Path |
|
|
|----------------|------|-----------|
|
|
| Enemy SO | Enemy Data Manager | `BaseGames/Data/Enemy Data Manager` |
|
|
| Weapon SO | Weapon Editor | `BaseGames/Data/Weapon Editor` |
|
|
| Weapon HitBox Prefab | Weapon HitBox Wizard | `BaseGames/Create/Weapon HitBox Prefab` |
|
|
| Skill SO | Skill Editor | `BaseGames/Data/Skill Editor` |
|
|
| Skill HitBox Prefab | Skill HitBox Wizard | `BaseGames/Create/Skill HitBox Prefab` |
|
|
| Player Form SO | Character Wizard | `BaseGames/Data/Character Wizard` |
|
|
| Boss skill data | Boss Skill Sequence | `BaseGames/Data/Boss Skill Sequence` |
|
|
| Addressables group/label sync | Rule Sync | `BaseGames/Addressables/Rule Sync` |
|
|
| Addressables batch register | Addressable Batch Tool | `BaseGames/Addressables/Addressable Batch Tool` |
|
|
| Validate address keys | Validate Address Keys | `BaseGames/Addressables/Validate Address Keys` |
|
|
|
|
---
|
|
|
|
## Hard Rules
|
|
|
|
- All `Address` constants → `AddressKeys.cs`. Never hardcode strings in code.
|
|
- All asset loading → `AssetLoader.LoadAsync<T>(AddressKeys.Xxx)`. Never call `Addressables.LoadAssetAsync` or `Resources.Load` directly.
|
|
- `EVT_*.asset` event channels are **never** registered as Addressables (use Inspector references).
|
|
- Sub-Prefabs (HitBox, HurtBox, bones) are **never** registered as Addressables.
|
|
- Test scenes in `Scenes/Testings/` are **never** registered as Addressables.
|
|
- All first-party assets must be under `Assets/_Game/`. Never place custom assets in third-party plugin folders.
|