유니티 벽돌깨기 게임 개발 일지
오늘은 기존에 구현한 벽돌깨기 게임에 다단계 레벨 및 게임 흐름 제어 기능을 추가하는 작업을 진행했다. 또한, 웹 배포 과정에서 발생한 여러 문제들을 해결했다.
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): 게임 개발이 완료되면 웹 브라우저에서 플레이할 수 있도록 빌드하고 온라인에 배포한다. (현재 진행 중이며, 기본적인 실행은 가능)