Skip to content

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와 그 셀프 체크는 없어도 동작합니다.

MIT License