AnimatorController DSL (AnimDsl)
AnimatorController를 JSON (DSL) 형식으로 입출력하는 도구입니다. Claude 등의 LLM에게 "읽게 하거나" "작성하게 하는" 용도를 상정한, 이름 기반의 선언 형식입니다.
창: 상단 메뉴의 さたにあしょっぴんぐ/エディタカスタマイザー/AnimatorController DSL (proto) (사타니아 쇼핑 / 에디터 커스터마이저 / AnimatorController DSL (proto))
스키마
| 스키마 | 대상 |
|---|---|
sce.animcontroller/v0.1 | 컨트롤러 전체 |
sce.animlayer/v0.1 | 레이어 하나 (참조하는 파라미터 선언 포함) |
json
{
"schema": "sce.animlayer/v0.1",
"layer": "MyToggle",
"parameters": [{ "name": "MyParam", "type": "Bool" }],
"stateMachine": {
"defaultState": "OFF",
"states": [
{ "name": "OFF", "transitions": [{ "to": "ON", "conditions": [{ "param": "MyParam", "mode": "If" }] }] },
{ "name": "ON", "transitions": [{ "to": "OFF", "conditions": [{ "param": "MyParam", "mode": "IfNot" }] }] }
]
}
}Export
- 창에서 컨트롤러 전체, 또는 레이어 하나를 선택해 JSON으로 변환할 수 있습니다
- Animator 창의 **레이어 우클릭
Export Layer As DSL**에서도 출력할 수 있습니다 - 「JSON をファイルへ保存…」(JSON을 파일로 저장…) 버튼으로 바로 .json 파일로 저장할 수 있습니다 (기본 이름은 컨트롤러 / 레이어 이름에서 자동 생성)
- 서브 스테이트 머신에서 출발하는 트랜지션 (sub-SM의
transitions)과 StateMachine에 직접 붙은 Behaviour (behaviours)도 출력합니다. 다른 서브 스테이트 머신에 같은 이름의 스테이트가 있으면, 전이 대상은Desktop/Enter같은 경로 표기 (레이어 루트부터의 sub-SM 이름을/로 연결. 이름 안의/는\/)로 구분합니다
Validate
붙여넣은 JSON을 적용 전에 전부 검증합니다 — 파라미터 선언의 중복·미선언 참조 / State 이름·도착 State 확인 / WriteDefaults 일관성 / Behaviour 타입·Motion 존재 여부 등. 오류는 한 줄 형식으로 출력되므로, 그대로 LLM에 돌려주어 스스로 수정하게 하는 운용이 가능합니다.
스테이트 이름의 유일성은 같은 스테이트 머신 안에서만 판정합니다 (다른 서브 스테이트 머신에 같은 이름이 있어도 됩니다). 이름만으로 쓴 전이 대상이 여러 곳에 일치하면 경고를 내므로, 경로 표기로 구분해 주세요.
Apply
- 新規作成 (신규 생성) — DSL 내용으로 새 .controller를 생성합니다
- 既存への追加 (기존에 추가) — 기존 컨트롤러에 레이어를 추가합니다
- 파라미터 충돌은 대화형으로 해결합니다: 같은 이름·같은 타입은 재사용 / 타입이 다르면 「既存を使う ⚠ (기존 사용) / 別名で追加 (다른 이름으로 추가)」 중에서 선택
- 같은 이름의 레이어는 자동으로 이름이 변경됩니다
sce.animlayer는 이 "추가" 전용입니다
Import에는 Newtonsoft.Json이 필요합니다
붙여넣은 JSON의 읽기·검증·Apply에는 com.unity.nuget.newtonsoft-json이 필요합니다 (SCE_NEWTONSOFT_JSON). Export와 그 셀프 체크는 없어도 동작합니다.