AI/Unity

Antigravity로 Unity와 ComfyUI연동하여UI 및 Sound 자동화

blacknabis 2026. 2. 1. 17:15

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.assetResources/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.prefabStatRowUI.cs를 새로 생성하여 UI 커스터마이징이 용이하도록 구조화했습니다.
  • 자동화 도구: AutoSetupStatRow.cs 에디터 스크립트로 프리팹 생성 및 할당을 자동화했습니다.장비 선택 패널 개선
  • 패널 스타일링: 흰색 배경을 어두운 반투명(0.1, 0.1, 0.15, 0.95)으로 변경하여 가독성을 높였습니다.
  • 아이콘 표시: ItemButtonUI.cs 스크립트와 프리팹 업데이트로 장비 아이콘이 표시되도록 구현했습니다.
  • 장비 슬롯 아이콘: 오른쪽 무기/방어구 버튼에도 아이콘 이미지를 추가하여 장착 중인 장비를 시각적으로 확인할 수 있습니다.

6. 마무리

이제 게임 내 모든 버튼 상호작용에 청각적 피드백이 추가되었을 뿐만 아니라, 월드맵에서도 고해상도 텍틱컬 UI 경험을 제공합니다. 일관성 있는 스타일 가이드라인과 자동화 도구 덕분에 추후 다른 씬 확장이 더욱 용이해졌습니다.

지금 공부하는건 최대한 AI를 사용하여 자동화하고 최신 기술을 익히는게 목표입니다. 초반 작업외에는 아직 손이 더 빠름. ComfyUI 연동해서 캐릭터나 사운드 일괄은 데이터가 늘어 날 수록 확실히 더 효과를 볼것으로 기대됨.

심플하게
다듬을 필요가 보인다.
캐릭터관리 창 신경 쓰여서 결국 아이콘 까지 다붙임... 후보정은 직접함...

어느정도 작업하고 직접 손으로 수정하는게 빠른거 같다...(AI자동화를 목표로 하니 우선 최대한 안티그래비티로...)

반응형