유니티 룰 타일 만들기 · 47·16 타일셋, 규칙 수작업 없이
시트를 잘라 이웃 규칙 47개를 클릭하는 대신 여기에 넣으세요. 배치를 인식하고, Unity 번들의 편집기 스크립트가 스프라이트를 자르고(Point, 무압축) 비트로 Rule Tile을 만듭니다.
Rule Tile(2D Tilemap Extras 패키지)은 타일링 규칙의 목록입니다. 규칙마다 3 × 3 격자가 있고, 각 이웃은 무시하거나, 이 Rule Tile이어야 하거나(초록 화살표), 아니어야 합니다(빨간 X). Unity는 위에서부터 규칙을 검사해 처음 맞는 것을 칠하고, 하나도 맞지 않으면 Default Sprite를 칠합니다. 블롭 타일셋이면 규칙 47개를 손으로 만들어야 합니다. Nerulio는 타일 비트로 규칙을 쓰고, PNG를 잘라 지형마다 RuleTile을 만드는 편집기 스크립트를 줍니다. Unity 6000.5.3f1과 Tilemap Extras 8.0.3에서 확인했습니다. 모서리·듀얼 그리드 세트는 Unity로 내보내지 않습니다.

- Unity 6 Rule Tile검증됨· Unity 6000.5.3f1 + 2D Tilemap Extras 8.0.3
- Godot 4 TileSet검증됨· Godot 4.7.2
- Tiled검증됨· Tiled 1.12.2
- LDtk일부 검증· LDtk 1.5.3 schema + loader
Rule Tile이 스프라이트를 고르는 방식
Tilemap Extras 매뉴얼이 구성 요소를 설명합니다. Default Sprite(맞는 규칙이 없을 때 칠함), Default Collider, 그리고 Tiling Rules 목록이 있고, 규칙마다 규칙 격자·스프라이트·출력(Single, Random, Animation)이 있습니다. 규칙 격자의 칸은 비워 두거나(그 이웃은 무시), 초록 화살표(이 Rule Tile이어야 함), 빨간 X(아니어야 함)로 둡니다. 매뉴얼은 Unity가 "위에서부터 차례로 각 규칙을 검사한다"고 적고 있습니다.
처음 맞는 규칙이 이기므로 순서가 중요합니다. 느슨한 규칙이 위에 있으면 엄격한 규칙이 가려집니다. Nerulio는 확인하는 이웃이 많은 규칙부터 정렬하고, 옆 변이 열린 모서리는 그림을 바꾸지 못하므로 비워 둡니다. 그래서 블롭 규칙 하나는 이웃 4~8칸을 봅니다. Unity 격자는 y축이 위를 향하므로 북쪽 이웃은 (0, 1)입니다.
Rule Tile은 자기가 놓인 칸에 그리고 주변 칸을 봅니다. 듀얼 그리드 타일은 네 칸 사이의 점에 속하므로 Rule Tile로는 표현할 수 없어, 모서리 세트는 Unity 내보내기에서 빠집니다. 한 시트의 지형 여러 개는 각각 별도의 Rule Tile이 되고 서로를 "이것이 아님"으로 보므로, 전환 타일 없이 맞닿습니다.
- Rule Tile
- 이웃 타일을 보고 스프라이트를 고르는 2D Tilemap Extras의 타일 에셋.
- Default Sprite
- 어떤 규칙도 맞지 않을 때 Unity가 칠하는 스프라이트. Nerulio 내보내기에서는 가득 찬 안쪽 타일.
- This / Not This
- 초록 화살표: 이웃이 이 Rule Tile. 빨간 X: 아님. 빈칸: 무시.
- 규칙 순서
- 규칙은 위에서부터 검사하며 처음 맞는 것이 칠해집니다.
예시: 블롭 타일 하나의 규칙
타일 마스크 31: N, NE, E, SE, S 연결, W 열림(Unity 격자, y 위쪽)
. ✓ ✓ . = 무시(열린 서쪽 변 뒤의 모서리)
✕ C ✓ ✓ = This(초록 화살표)
. ✓ ✓ ✕ = Not This(빨간 X)
JSON 이웃 [[0,1,1],[1,1,1],[1,0,1],[1,-1,1],[0,-1,1],[-1,0,2]] (dx, dy, 1 This / 2 NotThis)
블롭 47 → 규칙 47개, 확인 수가 많은 것부터; Default Sprite = 가득 찬 타일
변 16 세트 → 규칙 16개, 각각 변 4개 확인스프라이트 이름은 시트의 열과 행을 따르며(cr31 8 × 6 시트라면 위의 마스크 31 타일은 tile_4_1), 사각형은 Unity 방식대로 텍스처 왼쪽 아래부터 잽니다.
이렇게 작동합니다
- 블롭 47·변 16 세트. 규칙은 인식하거나 칠한 지형 비트에서 만듭니다.
- Editor/NerulioRuleTileImporter.cs가 2D Tilemap Extras로 지형마다 RuleTile을 만듭니다.
- Unity 6000.5.3f1 + Tilemap Extras 8.0.3에서 확인: 칠한 Tilemap의 모든 칸이 예측한 스프라이트이며, 스프라이트 영역과 픽셀이 정확합니다.
- 조합이 빠진 곳에는 Unity가 Rule Tile의 기본 스프라이트를 그리며, Studio 테스트 맵도 이를 보여 줍니다.
사용 방법
- 타일셋을 넣고 배치를 적용합니다.
- 점검 패널을 읽고 빠진 조합을 채웁니다.
- Unity 6으로 내보냅니다.
- 번들을 Assets/에 복사하고(.cs는 Editor 폴더에) JSON을 선택한 뒤 Tools › Nerulio › Build Rule Tiles를 실행합니다.
받게 되는 파일
| 파일 | 용도 |
|---|---|
nerulio-ruletile.json | 스프라이트 사각형, 유닛당 픽셀(= 타일 너비), 지형마다 기본 스프라이트와 정렬된 규칙. |
Editor/NerulioRuleTileImporter.cs | Tools › Nerulio › Build Rule Tiles 메뉴를 추가: PNG를 Sprite(Multiple)·Point·밉맵 없음·무압축으로 설정하고 잘라 지형마다 RuleTile을 씁니다. |
cave.png | 타일셋 이미지. |
README.txt | 이 단계 안내. |
Terrain.asset | 스크립트를 실행하면 Unity가 JSON 옆에 씁니다. 이름은 지형 이름을 따릅니다(바꾸지 않았다면 "Terrain"). |
Unity 6에서 Rule Tile을 만들고 칠하기
- 프로젝트에 없다면 2D Tilemap Extras를 설치합니다. Window › Package Manager › Unity Registry › 2D Tilemap Extras › Install.
- PNG와
nerulio-ruletile.json을Assets/아래 한 폴더에,NerulioRuleTileImporter.cs를 이름이Editor인 아무 폴더에 복사합니다. - Project 창에서 JSON을 선택하고 Tools › Nerulio › Build Rule Tiles를 실행합니다. Console에
Nerulio: wrote 1 RuleTile(s)가 나오고 JSON 옆에.asset이 생깁니다. - 타일맵을 만듭니다. Hierarchy에서 우클릭 › 2D Object › Tilemap › Rectangular.
- Window › 2D › Tile Palette를 열고 RuleTile 에셋을 팔레트로 끌어 놓은 뒤, 선택해서 Paint with Active Brush 도구로 칠합니다.
- 충돌이 필요하면 Rule Tile 인스펙터에서 Default Collider(와 각 규칙의 Collider)를 Grid로 바꾸고(스크립트는 None으로 씀) 타일맵에 Tilemap Collider 2D를 추가합니다.
결과 확인
- RuleTile 인스펙터에 블롭 세트면 타일링 규칙 47개(변 세트면 16개)가 보이고, Default Sprite는 가득 찬 안쪽 타일입니다.
- 3 × 3 영역과 외딴 한 칸을 칠합니다. 서로 다른 스프라이트 9개와 고립 스프라이트가 나와야 합니다. 가장자리에 가득 찬 타일이 나오면 그 조합이 시트에 없는 것입니다.
- 스크립트가 PNG를 Point 필터·무압축으로 가져오므로 어느 배율에서도 스프라이트가 선명해야 합니다.
문제 해결
| 증상 | 유력한 원인 | 확인 방법 | 해결 |
|---|---|---|---|
| Tools › Nerulio 메뉴가 없음 | 스크립트가 Editor 폴더에 없거나, 2D Tilemap Extras나 2D Sprite 패키지가 없어 컴파일되지 않음 | Console에서 RuleTile이나 SpriteDataProviderFactories를 언급하는 컴파일 오류 | 두 패키지를 설치하고 스크립트를 Editor 폴더로 옮기기 |
Nerulio: select nerulio-ruletile.json first. | JSON이 아닌 것이 선택됨 | Project 창의 선택 | JSON을 선택하고 메뉴를 다시 실행 |
| PNG가 "프로젝트에 없다"는 예외 | PNG가 JSON 옆에 없거나 이름이 바뀜 | JSON의 image 값과 파일 이름 비교 | 내보낸 이름 그대로 PNG를 JSON 옆에 두기 |
| 가장자리나 모서리에 가득 찬 타일이 나옴 | 시트에 그 조합이 없어 Unity가 Default Sprite를 칠함 | Studio 점검 패널의 빠진 조합 | 빠진 타일을 그리거나 생성해 다시 내보내기 |
| 두 지형이 딱 끊겨 만남 | 지형마다 별도 RuleTile이라 서로를 "이것이 아님"으로 봄 | 빌드 후 .asset 파일이 두 개 | 타일맵 하나에 지형 하나를 쓰거나, 전환이 필요하면 Godot·Tiled 사용 |
ZIP에 unity 폴더가 없음 | 모서리·듀얼 그리드 세트라서 건너뜀(NOTES.txt에 적힘) | Studio의 매칭 모드가 corners | 듀얼 그리드 세트는 Godot나 Tiled로 |
| 캐릭터가 타일맵을 통과해 떨어짐 | RuleTile의 Collider가 None이거나 Tilemap Collider 2D가 없음 | RuleTile 인스펙터의 Default Collider | Grid(또는 Sprite)로 바꾸고 Tilemap Collider 2D 추가 |
다른 방법
엔진별 내보내기와 검증 방법
"검증됨"은 실제 CC0 에셋으로 내보낸 파일을 해당 엔진·도구가 직접 불러와 원본과 비교했다는 뜻입니다. 불러오지 않은 형식은 그렇게 표시합니다.
| 대상 | 파일 | 검증 |
|---|---|---|
| Godot 4 TileSet | PNG · nerulio-tileset.json · nerulio_tileset_import.gd | 검증됨 Godot 4.7.2포함된 가져오기 스크립트가 지형 피어링 비트가 설정된 TileSet을 만듭니다. set_cells_terrain_connect로 칠한 맵이 9개 코퍼스 시트의 모든 칸에서 Studio 미리보기와 같았습니다. |
| Tiled | .tsx Wang set · sample.tmx | 검증됨 Tiled 1.12.2Tiled 자체 읽기 기능이 모든 Wang ID를 그대로 읽고 샘플 맵이 픽셀 단위로 동일하게 렌더링됩니다. 지형 브러시 자체는 실행하지 않았습니다. |
| Unity 6 Rule Tile | nerulio-ruletile.json · Editor/NerulioRuleTileImporter.cs | 검증됨 Unity 6000.5.3f1 + 2D Tilemap Extras 8.0.3블롭·변 타일셋: 칠한 Tilemap의 모든 칸이 예측한 스프라이트와 같습니다. 모서리/듀얼 그리드 타일셋은 Unity로 내보내지 않습니다. |
| LDtk | .ldtk (1.5.3) · rules · sample level | 일부 검증 LDtk 1.5.3 schema + loaderLDtk JSON 스키마와 공식 로더가 받아들이고 규칙을 다시 실행하면 내보낸 타일과 같습니다. LDtk 앱에서 열어 보지는 않았습니다. |
검증 근거
타일 코퍼스에서 픽셀만으로 배치를 인식: 블롭 47 템플릿 4개와 Wang 템플릿 2개는 높은 신뢰도, 실제 64px 동굴 타일셋은 중간 신뢰도로 모든 타일의 비트가 정확. Godot 4.7.2가 모든 테스트 칸을 Studio 예측대로 칠함(블롭 세트마다 485/485, 지형 4개 듀얼 그리드 팩 251/251). Tiled 1.12.2가 모든 Wang ID를 다시 읽음. Unity 6000.5에서 블롭·변 세트의 칠한 모든 칸 일치.
한계
- 모서리·듀얼 그리드 세트는 Unity로 내보내지 않습니다.
- 지형 여러 개는 서로 전환이 없는 별도의 RuleTile이 됩니다.
- 충돌 모양은 없습니다. RuleTile은 Collider None으로 쓰이며, Nerulio가 딴 폴리곤은 Godot로만 갑니다.
- Tiled 지형 브러시, LDtk 앱, Godot 편집기의 칠하기는 실행하지 않았습니다. 검증은 엔진의 읽기 기능과 set_cells_terrain_connect로 했습니다.
- Unity로는 블롭·변 타일셋만 내보냅니다. 지형이 여러 개면 서로 이어지지 않는 Rule Tile 여러 개가 됩니다.
- 아이소메트릭·육각 타일, 애니메이션 타일, 오클루전·내비게이션 레이어는 지원하지 않습니다.
- 알려진 배치 없이 비트를 제안하려면 기준이 되는 "가득 찬" 타일이 필요합니다. 변만 있는 길 템플릿은 그 타일을 선택하기 전까지 추측이 틀릴 수 있습니다.
버전과 출처
Unity 6000.5.3f1(배치 모드)과 2D Tilemap Extras 8.0.3에서 확인했습니다. 함께 주는 스크립트가 RuleTile을 만들었고, 칠한 Tilemap이 코퍼스 10세트의 모든 칸에서 Studio가 예측한 스프라이트를 돌려주었으며 스프라이트 사각형과 픽셀도 정확했습니다. 규칙 JSON에서 스프라이트 두 개를 바꾸면 이 점검이 실패합니다. 위의 Unity 메뉴 경로는 Unity 6 매뉴얼과 Tilemap Extras 8.0.3 문서를 따릅니다.
참고한 공식 문서
자주 묻는 질문
Unity 2D Tilemap Extras가 필요한가요?
네. Rule Tile은 그 패키지에 있습니다(8.0.3으로 확인).
시트 하나에 지형이 여러 개면요?
지형마다 Rule Tile이 따로 생기며, Unity는 그 사이의 전환을 그리지 않습니다.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).