핫스팟 스크립트 문법 (umx_hotspot)
핫스팟 레이아웃 에셋을 생성·편집하는 umx_hotspot 스크립트의 전체 문법 참조입니다.
umx_hotspot 은 스크립트 한 장으로 핫스팟 레이아웃 에셋을 만들고 편집하는 툴입니다. 핫스팟 텍스처링 자체에 대한 설명은 핫스팟 텍스처링 을 참고하세요.
asset "Assets/Hotspots/Walls.asset" create
new "TrimTop" rect=0,0.75,1,1
rule axis type=topside angle=15
grid cols=2 rows=2 pad=0.01 prefix="Cell"
list
문장 종류
| 문장 | 하는 일 |
|---|---|
asset "경로" [create] | 이후 줄이 적용될 대상 에셋 지정 |
new ["이름"] rect=... | 레이아웃 생성 |
@"이름" / @#index | 기존 레이아웃 편집 |
rule <종류> ... | 위 레이아웃에 규칙 적용 (2칸 들여쓰기) |
del "이름" / del #index | 레이아웃 삭제 |
clear | 모든 레이아웃 삭제 |
grid cols=N rows=M | 0~1 UV 영역을 격자로 분할 |
export "경로.png" | 색상 가이드 PNG 저장 |
list | 결과에 레이아웃 스냅샷 포함 |
기본 규칙(2칸 들여쓰기, # 주석, 큰따옴표 이름, 마침표 소수점)은 씬 스크립트 와 같습니다.
대상 에셋 지정 (asset)
asset "Assets/Hotspots/Walls.asset"
asset "Assets/Hotspots/Walls.asset" create
- 경로는
Assets/로 시작하고.asset으로 끝나야 합니다. create를 붙이면 에셋이 없을 때 새로 만듭니다. 없이 쓰면 존재하는 에셋만 대상이 됩니다.asset줄이 하나도 없으면 열려 있는 핫스팟 에디터의 활성 핫스팟이 대상이 됩니다.
한 스크립트 안에서 asset 줄을 여러 번 써서 여러 에셋을 순서대로 편집할 수 있습니다.
레이아웃 생성 (new)
new "TrimTop" rect=0,0.75,1,1
new rect=0,0,0.5,0.5
rect=minU,minV,maxU,maxV— 필수입니다. min 은 max 보다 작아야 합니다.- 이름은 생략할 수 있습니다.
rect외의k=v키는 받지 않습니다.
레이아웃 편집 (@)
@"Cell_0_0" name="Floor"
@"Floor" rect=0,0,1,0.25
@#12 name="TrimBottom"
@"이름"또는@#index로 대상을 지정합니다.#index는 레이아웃 인덱스입니다.name=으로 이름을 바꾸고,rect=로 영역을 바꿉니다. 그 외 키는 받지 않습니다.- 아래에
rule줄을 들여써서 규칙을 함께 지정할 수 있습니다.
규칙 (rule)
rule 은 new 또는 @ 아래에 2칸 들여써서만 쓸 수 있습니다. rule 이 아닌 문장을 들여쓰면 오류입니다.
rule axis — 면 방향 제한
rule axis type=topside angle=15
rule axis off
| 키 | 값 |
|---|---|
type | top · bottom · side · topbottom · topside · bottomside |
angle | 허용 각도(도) |
rule length — 크기 제한
rule length min=0.1,0.1 max=0.5,0.5
rule length max=1,1
| 키 | 값 |
|---|---|
min | u,v 두 성분 |
max | u,v 두 성분 |
rule uvdirect — UV 방향 제한
rule uvdirect allow=x+,x-,y+
| 키 | 값 |
|---|---|
allow | x+ x- y+ y- z+ z- 중 하나 이상 (쉼표 구분) |
규칙 끄기
값 대신 off 토큰을 쓰면 그 규칙이 비활성화됩니다.
rule axis off
rule length off
rule uvdirect off
삭제 (del · clear)
del "TrimTop"
del #12
clear
clear 는 대상 에셋의 모든 레이아웃을 지웁니다.
격자 분할 (grid)
grid cols=4 rows=2
grid cols=2 rows=2 pad=0.01 prefix="Cell"
0~1 UV 정사각형을 cols × rows 로 나눠 레이아웃을 한 번에 만듭니다.
| 키 | 설명 | 기본값 |
|---|---|---|
cols | 열 수 (필수) | — |
rows | 행 수 (필수) | — |
pad | 셀 사이 UV 간격 | 0 |
prefix | 이름 접두어 | — |
이름은 {prefix}_{행}_{열} 형식으로 붙습니다. 예: Cell_0_0
가이드 이미지 내보내기 (export)
export "D:/out/walls_guide.png"
export "D:/out/walls_guide.png" res=2048
레이아웃 배치를 색상으로 구분한 가이드 PNG 를 저장합니다. 텍스처를 그릴 때 밑그림으로 사용합니다.
- 경로는
.png로 끝나야 하고, 저장 폴더가 존재해야 합니다. res허용값:512·1024·2048·4096
현재 상태 확인 (list)
list
결과 데이터에 레이아웃 스냅샷(인덱스 · 이름 · rect · 규칙)을 포함시킵니다. 다음 수정을 정하기 전에 현재 상태를 확인할 때 사용합니다.
결과 데이터
| 항목 | 내용 |
|---|---|
created | 생성된 레이아웃 ("이름#인덱스") |
updated | 수정된 레이아웃 |
deleted | 삭제된 레이아웃 |
rulesApplied | 적용된 규칙 수 |
failed | 실패한 문장 — 줄 번호와 이유 |
warnings | 경고 목록 |
layouts | list 를 썼을 때의 레이아웃 스냅샷 |
#index 는 "이름" 이 쓰이는 모든 자리에 사용할 수 있습니다 — @#index, del #index.
전체 예시
# 벽·바닥용 트림시트 레이아웃
asset "Assets/Hotspots/Walls.asset" create
clear
new "TrimTop" rect=0,0.75,1,1
rule axis type=topside angle=15
rule length min=0.1,0.1 max=0.5,0.5
rule uvdirect allow=x+,x-,y+
new "WallLarge" rect=0,0.25,0.5,0.75
rule axis type=side angle=20
new "Floor" rect=0.5,0.25,1,0.75
rule axis type=top angle=10
export "D:/out/walls_guide.png" res=2048
list
격자로 시작하고 싶다면 grid 로 칸을 먼저 만든 뒤 이름과 규칙만 손보는 방식이 편합니다.
asset "Assets/Hotspots/Tileset.asset" create
clear
grid cols=4 rows=4 pad=0.005 prefix="Cell"
@"Cell_0_0" name="Floor"
rule axis type=top angle=10
list
