

반복 배치가 답답해서 직접 에디터 툴을 만들기 시작했다
- 이번 글은 Unity 기본 배치 작업의 반복을 줄이기 위해, 쿼터뷰 퍼즐 게임용 Map Tool을 만들기 시작한 배경과 초기 기능들을 정리한 기록이다.
현재 만들고 있는 게임은 쿼터뷰 퍼즐 탐험 구조를 기반으로 한다.
플레이어는 우산을 활용해 환경과 상호작용하고, 카메라를 회전하며 가려져 있던 길을 발견하는 식으로 진행된다.
이 구조에서 중요한 것은 단순히 예쁜 맵을 만드는 것이 아니라, 시점 회전, 가려지는 구조, 벽 높이, 발판 배치를 빠르게 바꿔보면서 게임 감각을 검증하는 것이다.
문제는 Unity 기본 배치 방식만으로는 이 반복 작업이 너무 느렸다는 점이었다.
오브젝트를 생성하고, 위치를 맞추고, 회전시키고, 높이를 조절하고, 다시 비슷한 블록을 복제하는 과정을 반복하다 보면 금방 리듬이 끊겼다.
특히 내가 만들고 싶은 게임은 공간을 많이 실험해야 하는 구조였기 때문에, 맵을 만드는 속도 자체가 개발 속도와 직결된다고 느꼈다.
(또한 기획, 아트 작업을 할때 레벨 디자인, 맵의 분위기를 조금 더 빠르게 검증할 수 있다 생각했다.)
그래서 Unity Editor 안에서 바로 프리팹을 배치할 수 있는 Map Tool을 만들기 시작했다.
처음부터 상용 레벨 에디터 같은 큰 툴을 만들겠다는 생각은 아니었다.
우선은 현재 프로젝트에서 가장 자주 반복하는 작업만 줄여보자는 쪽에 가까웠다.
처음 넣은 기능은 아주 단순했다.
- 선택한 prefab을 Scene View에서 배치
- Grid Size 기준으로 위치 끊기
- Height Step, Height Level로 층 조절
- Q / E로 회전, R로 90도 회전
- Shift + Drag로 연속 배치
- Ctrl + 클릭으로 삭제
여기서 중요한 점은, 처음에는 FBX 같은 완성형 배경 리소스가 없어도 툴 작업을 시작할 수 있었다는 것이다.
초기에는 Unity 기본 Cube, Plane, Cylinder 같은 오브젝트를 프리팹으로 만들어서 배치 테스트를 했다.
즉 이 단계에서 중요한 것은 아트 리소스가 아니라, 배치 흐름과 조작감 자체였다.
처음 미리보기 방식도 단순했다.
현재 셀에 하늘색 네모를 그려서, 클릭하면 그 위치에 prefab이 생성되도록 만들었다.
하지만 실제로 써보니 셀 하이라이트만으로는 부족했다.
벽인지 바닥인지, 회전 상태가 맞는지, 실제로 어느 정도 크기의 오브젝트가 놓일지 직관적으로 보이지 않았기 때문이다.
그래서 중간에 방향을 바꿨다.
하늘색 셀만 보여주는 대신, 선택한 prefab 자체를 반투명한 preview mesh로 Scene View에 띄우고, 클릭 시 그 자리에 실제 인스턴스를 생성하도록 바꿨다.
이 변화는 생각보다 컸다.
단순히 예뻐진 것이 아니라, 배치 전에 이미 결과를 거의 그대로 볼 수 있게 되었기 때문이다.
이후에는 Floor, Wall, Stair 프리셋도 추가했다.
맵을 만들 때 자주 쓰는 블록들을 매번 Project 창에서 다시 끌어오는 대신, 툴 창 상단에 미리 등록해두고 버튼 한 번으로 현재 배치 대상 prefab을 바꿀 수 있게 했다.
이건 작은 기능이었지만, 실제로는 반복 작업을 꽤 많이 줄여줬다.
툴을 만들면서 의외로 중요했던 또 하나는 Material Preset과 MeshCollider 처리였다.
단순히 오브젝트를 놓는 것만으로 끝나는 것이 아니라, 선택한 오브젝트들에 머티리얼을 한 번에 적용하거나, 배치된 오브젝트에 MeshCollider를 붙이는 유틸리티까지 같이 두는 것이 훨씬 실전적이었다.
결국 맵툴은 배치만 하는 도구가 아니라, 배치 후에 바로 씬을 정리하는 도구여야 한다는 걸 조금씩 느끼게 됐다.
프리팹 배치, 그리드 스냅, 높이 조절, 미리보기, 프리셋, material 적용, collider 보조 기능까지 갖춘 상태이기 때문에, 충분히 Map Tool 혹은 Level Blockout Tool이라고 부를 수 있다고 생각한다.
무엇보다 이번 작업을 하면서 분명하게 느낀 건, 이런 툴을 만드는 이유가 단순히 편하려고만은 아니라는 점이었다.
툴이 있어야 맵을 더 많이 바꿔볼 수 있고, 더 많이 실패할 수 있고, 결국 게임의 공간 구조를 더 빨리 검증할 수 있다.
지금 만든 맵툴 역시 그 목적에 가장 가깝다.
다만 여기까지 오는 동안, 단순 grid placement만으로는 해결되지 않는 문제가 하나 계속 남아 있었다.
바로 Snap이었다.
오브젝트를 그냥 놓는 것은 쉬웠지만, 다른 메쉬의 면에 딱 붙게 배치하는 것은 전혀 다른 문제였다.
그리고 그 문제를 파고들다 보니, 단순한 위치 보정을 넘어서 MeshCollider, AABB, face, triangle, coplanar polygon, Face Anchor까지 오게 되었다.
그 이야기는 다음 글에서 자세히 정리해보려고 한다.
'Unity - '한 우산 아래'' 카테고리의 다른 글
| 맵툴 제작기 3 - 2000줄 넘은 Unity Editor Tool 코드 정리하기 (0) | 2026.04.08 |
|---|---|
| 맵툴 제작기 2 - AABB는 왜 안 맞았는가 : Surface Snap에서 Face Anchor까지 (0) | 2026.04.08 |
| [한 우산 아래] 캐릭터를 가리는 벽 처리 - Layer 분리와 Material 기반 Occlusion Fade 구현 (0) | 2026.04.01 |
| C#의 foreach와 var를 C++과 비교해보기 (0) | 2026.04.01 |
| Unity - Dictionary (0) | 2026.04.01 |