유니티 벽돌깨기 게임 개발 일지
오늘은 기존에 구현한 벽돌깨기 게임에 다단계 레벨 및 게임 흐름 제어 기능을 추가하는 작업을 진행했다. 또한, 웹 배포 과정에서 발생한 여러 문제들을 해결했다.
1. 다단계 씬 및 기본 UI 구축
-
게임의 흐름을 단계별로 나누기 위해
StartScene
,GameScene_Level1
,WinScene
,LoseScene
등 여러 씬을 생성했다. -
각 씬에
Canvas
를 추가하고,TextMeshPro
를 활용하여 타이틀 텍스트, 점수 및 생명 표시 텍스트, 그리고 게임 시작/다시 시작/처음으로 돌아가기 버튼과 같은 기본적인 UI 요소들을 배치했다. -
모든 생성된 씬들을 유니티
Build Settings
에 추가하고,StartScene
이 가장 먼저 로드되도록 순서를 조절했다. -
UI 요소들을 재활용하기 위해
ScoreText
,LivesText
,RestartButton
,GoToStartButton
등 자주 사용되는 UI들을 프리팹으로 제작했다.
2. 게임 매니저 (GameManager
) 확장 및 씬 전환 로직 구현
-
GameManager.cs
스크립트를 대폭 수정하여 씬 전환, 생명 관리, 점수 관리, 레벨 진행(다음 단계 로드), 게임 승리/패배 처리 등의 핵심 게임 흐름을 제어하도록 했다. -
공이 바닥 벽에 닿아 사라지지 않던 문제를 해결하기 위해
GameManager.cs
의BallLost()
함수에Destroy(currentBall);
코드를 추가하여 공이 소실될 때 실제 게임 오브젝트가 파괴되도록 했다. -
생명이 모두 소진되거나 모든 벽돌을 깼을 때 각각
LoseScene
또는WinScene
으로 전환되도록 로직을 연결했다. -
GameManager
인스턴스 관리 방식을 재점검했다. 초기에는 씬마다GameManager
오브젝트를 배치하고 해당 씬의 UI만 연결하려 했으나, 이로 인해 버튼 작동 및Paddle Transform
연결 문제와 같은 참조 오류가 발생했다. 이 문제는DontDestroyOnLoad
를 사용하지 않는 현재 구조에서 각 씬의GameManager
가 해당 씬의 리소스만 정확히 참조하도록 연결하는 작업이 필요함을 확인했다.
3. WebGL 배포 및 실행 환경 문제 해결
-
게임을 웹에서 플레이하기 위해 유니티 프로젝트를 WebGL 형식으로 빌드하는 작업을 진행했다.
-
첫 번째 문제: 빌드된
index.html
파일을 로컬에서 직접 열었을 때file://
URL 보안 정책으로 인해 게임이 실행되지 않는 오류가 발생했다. Python의http.server
모듈을 사용한 로컬 웹 서버(python -m http.server
)를 통해 이 문제를 해결했다. -
두 번째 문제: 웹 서버를 통해 실행했음에도
Unable to parse Build/빌포.framework.js.br!
(Brotli 압축) 또는Unable to parse Build/빌포.framework.js.gz!
(Gzip 압축) 오류가 발생했다. 이는 로컬 웹 서버가 해당 압축 형식의 HTTP 응답 헤더를 제대로 보내지 못하기 때문으로 판단했다. -
해결: 유니티
Build Settings
의Player Settings
에서Publishing Settings
섹션의Compression Format
옵션을Brotli
또는Gzip
에서Disabled
로 변경하여 빌드를 다시 진행함으로써 압축 해제 문제를 우회했다.
오늘의 작업을 통해 벽돌깨기 게임의 다단계 구성과 기본 게임 흐름 제어를 위한 씬 및 UI 준비를 마쳤다. 또한, WebGL 빌드 시 발생할 수 있는 주요 환경 문제를 해결하여 웹에서의 게임 실행 가능성을 확보했다. 버튼 작동 및 오브젝트 참조와 관련된 미해결 문제는 다음 작업에서 집중적으로 다룰 예정이다.
벽돌깨기 게임: 이후 진행할 내용
-
남아있는 버튼 작동 및 오브젝트 참조 문제 해결: 각 씬의
GameManager
가 해당 씬의 UI 및Paddle Transform
과 같은 게임 오브젝트를 정확히 참조하도록 연결을 최종 확인하고 필요시 로직을 개선한다. -
사운드 효과 추가: 공의 충돌, 벽돌 파괴 등 주요 이벤트에 사운드를 넣는다.
-
다양한 벽돌 및 파워업 아이템: 여러 번 쳐야 깨지는 벽돌이나 특수 아이템을 추가한다.
-
웹 배포 (WebGL): 게임 개발이 완료되면 웹 브라우저에서 플레이할 수 있도록 빌드하고 온라인에 배포한다. (현재 진행 중이며, 기본적인 실행은 가능)