wan의 개발일기
RoomCraft #9. 방 커스터마이징 — 사용자 입력으로 방 크기 설정 본문
소스코드 → github.com/Jywan/RoomCraft
들어가며
지금까지 방 크기가 코드에서 new RoomData(4f, 3f, 2.5f)로 고정돼 있었다. 내 방이 4m × 3m이 아니면 쓸모가 없는 셈.
이번에는 앱 시작 시 사용자가 직접 방 크기를 입력해서 원하는 크기의 방을 만들 수 있게 한다.
동작 흐름
- 앱 시작 → 방 설정 패널이 뜸
- 방 이름, 가로(m), 세로(m), 높이(m) 입력
- “방 만들기” 클릭 → 입력한 크기로 방 생성
- 패널 사라지고 배치 화면으로 전환
방이 만들어지기 전에는 “가구 추가” 버튼이 비활성화 상태다. 방 없이 가구를 만들면 의미가 없으니까.
RoomSetupUI 구현
입력값 파싱 + 방 생성
private void OnCreateRoomClicked()
{
float width, depth, height;
if (!float.TryParse(widthInput.text, out width)) width = 4f;
if (!float.TryParse(depthInput.text, out depth)) depth = 3f;
if (!float.TryParse(heightInput.text, out height)) height = 2.5f;
// 범위 제한 (1~20m, 높이 1.5~5m)
width = Mathf.Clamp(width, 1f, 20f);
depth = Mathf.Clamp(depth, 1f, 20f);
height = Mathf.Clamp(height, 1.5f, 5f);
currentRoomData = new RoomData(width, depth, height, roomName);
roomBuilder.BuildRoom(currentRoomData);
// 카메라 + 충돌 감지에 방 크기 전달
cameraController.SetTargetPoint(Vector3.zero);
furnitureBounds.SetRoomSize(width, depth);
// 가구 추가 버튼 활성화
addFurnitureButton.interactable = true;
panel.SetActive(false);
}
입력 안 하면 기본값(4×3×2.5m), 범위 밖이면 클램핑. 잘못된 입력에 앱이 터지지 않는다.
가구 추가 버튼 비활성화
private void Start()
{
createButton.onClick.AddListener(OnCreateRoomClicked);
panel.SetActive(true);
// 방 생성 전에는 가구 추가 불가
addFurnitureButton.interactable = false;
}
button.interactable = false로 버튼을 회색 처리할 수 있다. SetActive(false)와 달리 버튼이 보이긴 하지만 클릭이 안 되는 상태.
실행 결과
UI 구조
Panel 안을 두 영역으로 나눴다:
RoomSetupPanel
├── InputArea (Vertical Layout Group)
│ ├── RoomNameInput
│ ├── RoomWidthInput
│ ├── RoomDepthInput
│ └── RoomHeightInput
└── CreateRoomButton (하단 고정)
InputArea에 Vertical Layout Group을 붙여서 InputField들을 자동 정렬하고, 버튼은 별도로 하단에 Anchor를 잡았다. Panel의 Layout Group과 분리하는 게 포인트.
정리
| 기능 | 핵심 구현 |
|---|---|
| 방 크기 입력 | TMP_InputField + float.TryParse + Mathf.Clamp |
| 방 생성 | RoomBuilder.BuildRoom() + 카메라/충돌 감지 연동 |
| 버튼 비활성화 | button.interactable = false/true |
| 현재 제한 | 직사각형 방만 지원 (L자/다각형은 추후 확장) |
다음 편에서는 저장된 프로젝트를 목록에서 선택해서 불러오는 UI를 구현할 예정이다.
'1인 게임개발 활동 > 가구배치 시뮬레이터' 카테고리의 다른 글
| RoomCraft #11. 에디터 툴바 — 키보드에서 버튼으로 (0) | 2026.07.02 |
|---|---|
| RoomCraft #10. 씬 분리 — 시작 화면 만들기 (0) | 2026.07.01 |
| RoomCraft #8. 그리드 스냅 + 치수 표시 — 정렬 도우미와 가구 정보 UI (0) | 2026.06.28 |
| RoomCraft #7. 프로젝트 저장/불러오기 — JSON 직렬화 (0) | 2026.06.28 |
| RoomCraft #6. 카테고리별 동적 모델 생성 — 팩토리 패턴으로 가구 형태 조합 (0) | 2026.06.28 |