2026-02-01 개발 일지: UI 버튼 사운드 표준화 및 오디오 시스템 개선 (AI모델 사용 후 MD파일로 추출 후 복붙)
오늘은 게임 전반의 오디오 경험을 향상시키기 위해 오디오 생성 시스템 구축과 UI 버튼 사운드 표준화 작업을 진행했습니다.
1. 오디오 시스템 구축 및 개선
ComfyUI 연동 및 자동 생성
- 모델 변경: 기존의 오류가 발생하던 오디오 워크플로우를
Stable Audio Open 1.0모델 기반으로 전면 수정했습니다. - 자동화 툴 개발:
AutoGenerateGameAudio.cs에디터 툴을 개발하여, 클릭 한 번으로 게임에 필요한 핵심 BGM(메인화면, 전투, 월드맵 등)과 SFX(버튼 클릭음)를 일괄 생성하고 저장하도록 구현했습니다. - 포맷 통일: Unity 호환성을 위해 모든 생성 오디오를
.wav포맷으로 자동 변환하여 저장합니다.
SoundManager 구조 개선
- Singleton & Lazy Init:
SoundManager가 씬에 없더라도 접근 시 자동으로 생성되도록 개선하여NullReferenceException을 원천 차단했습니다. - 리소스 경로 최적화:
SoundData.asset을Resources/Data폴더로 이동하여 런타임 로드 안정성을 확보했습니다.
2. UI 버튼 사운드 표준화
기존에는 버튼마다 스크립트에서 일일이 사운드 재생 코드를 작성해야 했으나, 이를 컴포넌트 기반으로 자동화했습니다.
UIButtonSound 컴포넌트
UIButtonSound.cs스크립트를 새로 작성했습니다. 이 컴포넌트는ButtonUI 요소에 부착되어 클릭 시 자동으로 "ButtonClick" 사운드를 재생합니다.
씬별 적용 현황
모든 주요 씬의 UI에 사운드를 적용했습니다:
- MainMenu: 기존의 하드코딩된 리스너를 제거하고
UIButtonSound컴포넌트로 대체했습니다. - WorldMap: 상점, 저장 등 메뉴 버튼에 적용했습니다.
- CharacterManagement: 장비 장착, 목록 버튼 등에 적용했습니다.
동적 UI 객체 대응 (기술적 해결)
프리팹을 인스턴스화하여 사용하는 동적 UI 요소들(StageButton, CharacterCard, BattleUI 버튼 등)은 프리팹 직접 수정에 제약이 있었습니다. 이를 해결하기 위해 런타임 주입 방식을 사용했습니다.
// 예시: StageButton.cs
if (button.GetComponent<UIButtonSound>() == null)
button.gameObject.AddComponent<UIButtonSound>();
위와 같이 초기화(Initialize 또는 Start) 단계에서 사운드 컴포넌트가 없으면 자동으로 추가하도록 코드를 수정하여, 어떤 상황에서도 버튼 소리가 누락되지 않도록 조치했습니다.
4. 월드맵 UI 강화 및 스타일 통합 (Classic Tactical)
월드맵 UI의 가독성을 높이고 메인 메뉴와의 시각적 일관성을 확보하기 위해 Classic Tactical 스타일로 전면 개편했습니다.
스타일 통합 및 에셋 재생성
- 테마 통일: 메인 메뉴에서 검증된 'Into the Breach' 스타일의
Classic Tactical테마를 월드맵에도 적용했습니다. 다크 네이비 배경과 네온 블루 보더가 특징입니다. - 에셋 고도화:
WorldMapAssetGenerationHelper.cs를 수정하여 버튼, 패널, 아이콘을 재생성했습니다. 가독성을 저해하던 기존의 복잡한 지도 장식형 버튼을 제거하고 깔끔한 텍틱컬 버튼으로 교체했습니다.
UI 가독성 강화 (UX 개선)
- 배경 틴트: 배경 지도(
WorldMap_Background)에 다크 틴트(0.5~0.6)를 적용하여 밝은 배경 위에서 UI가 묻히는 현상을 해결하고 메인 메뉴의 배경과 조화가 이루어지도록 했습니다. - 폰트 및 텍스트 표준화:
NeoDunggeunmoPro(둥근모) 폰트를 월드맵 전체 텍스트에 적용했습니다.- 모든 UI 텍스트에 아웃라인(Outline) 설정을 강제하여 배경색에 관계없이 텍스트를 명확히 읽을 수 있도록 했습니다.
- 주요 정보(챕터, 골드 등)에는
UITheme.TitleColor(황금색)를 적용하여 시각적 위계를 정립했습니다.
기술적 자동화 (Editor Tooling)
- WorldMapStyleApplier.cs: 씬 내의 모든 UI 요소를 찾아 스타일을 일괄 적용하는 도구를 재작성했습니다. 폰트 교체, 색상 틴트, 아웃라인 추가 등을 버튼 클릭 한 번으로 수행할 수 있습니다.
- StageButton 프리팹 업데이트: 런타임에 생성되는 스테이지 버튼 프리팹도 새로운 스타일과 가독성 설정이 적용되도록 자동 업데이트 로직을 강화했습니다.
5. 캐릭터 관리 씬 UI 개선
캐릭터 관리 화면의 가독성과 사용성을 크게 향상시켰습니다.
스탯 표시 리팩토링
- 동적 행 생성: 기존의 단일 텍스트 블록 방식에서 개별 스탯 행을 동적으로 생성하는 방식으로 변경했습니다.
- 2열 레이아웃: 라벨(ATK, DEF 등)과 값을 별도 열로 분리하여 정렬을 개선했습니다.
- 프리팹 기반:
StatRow.prefab과StatRowUI.cs를 새로 생성하여 UI 커스터마이징이 용이하도록 구조화했습니다. - 자동화 도구:
AutoSetupStatRow.cs에디터 스크립트로 프리팹 생성 및 할당을 자동화했습니다.장비 선택 패널 개선 - 패널 스타일링: 흰색 배경을 어두운 반투명(0.1, 0.1, 0.15, 0.95)으로 변경하여 가독성을 높였습니다.
- 아이콘 표시:
ItemButtonUI.cs스크립트와 프리팹 업데이트로 장비 아이콘이 표시되도록 구현했습니다. - 장비 슬롯 아이콘: 오른쪽 무기/방어구 버튼에도 아이콘 이미지를 추가하여 장착 중인 장비를 시각적으로 확인할 수 있습니다.
6. 마무리
이제 게임 내 모든 버튼 상호작용에 청각적 피드백이 추가되었을 뿐만 아니라, 월드맵에서도 고해상도 텍틱컬 UI 경험을 제공합니다. 일관성 있는 스타일 가이드라인과 자동화 도구 덕분에 추후 다른 씬 확장이 더욱 용이해졌습니다.
지금 공부하는건 최대한 AI를 사용하여 자동화하고 최신 기술을 익히는게 목표입니다. 초반 작업외에는 아직 손이 더 빠름. ComfyUI 연동해서 캐릭터나 사운드 일괄은 데이터가 늘어 날 수록 확실히 더 효과를 볼것으로 기대됨.



어느정도 작업하고 직접 손으로 수정하는게 빠른거 같다...(AI자동화를 목표로 하니 우선 최대한 안티그래비티로...)
'AI > Unity' 카테고리의 다른 글
| # 2026-02-03 개발 로그: CT 턴 시스템 구현 및 카메라 연출 (0) | 2026.02.04 |
|---|---|
| AnityGravity를 사용해서 상점 개선(취중 바이브코딩...) 개발로그. (2) | 2026.02.03 |
| ComfyUI 자동화 개발로그 (0) | 2026.01.31 |
| AntiGravity와 ComfyUI를 연동하여 인벤토리 이미지 적용을 (0) | 2026.01.31 |
| AntiGravity를 이용한 SRPG만들기 11일차 (아이템 장비 버그 수정) (1) | 2026.01.26 |