0%

Unity

"Unity로 키오스크 만들다 멘탈 나갈 뻔한 이야기 — 경기도 가이드비디오 시스템 개발기"

김*겸··수정됨 2026.07.19

"Unity로 키오스크 만들다 멘탈 나갈 뻔한 이야기 — 경기도 가이드비디오 시스템 개발기"

1. 시작은 단순했다 — "사진 돌아가게만 해주세요"

클라이언트의 요구사항은 심플했다. 경기도 파주시 소재 공공기관에 세로형 디스플레이(1080x1920)를 놓고, 안내 이미지를 자동으로 슬라이드쇼처럼 보여주는 프로그램.

"그거 PowerPoint로 하면 안 됩니까?"라는 말이 목구멍까지 올라왔지만, 요구사항을 듣다 보니 이야기가 달라졌다.

  • 현재 시간 실시간 표시

  • 현재 날씨 실시간 표시

  • 프로그램 안 끄고 이미지 추가/삭제 가능해야 함

  • 프로그램 안 끄고 슬라이드 전환 속도 변경 가능해야 함

  • 컴퓨터 모르는 직원도 운영할 수 있어야 함

PowerPoint 닫았다. Unity 열었다.


2. 함정 1: "핫리로드는 생각보다 지옥이다"

가장 큰 난관은 프로그램을 안 끄고 이미지를 바꾸는 것이었다.

일반적인 슬라이드쇼라면 시작할 때 이미지 로드하고 끝이다. 하지만 이 시스템은 운영 중에 GuideImages 폴더에 파일을 넣으면 5초 안에 반영되어야 했다.

5초마다 폴더 스캔 → 파일 목록 비교 → 새 이미지 로드 → 기존 텍스처 메모리 해제

여기서 터진 문제들:

  • 파일을 복사하는 도중에 읽으면? → 0바이트 파일 읽기 시도 → 크래시

  • 이미지가 깨져있으면? → Texture2D.LoadImage 실패 → 검은 화면

  • 폴더가 통째로 없어지면? → DirectoryNotFoundException → 앱 사망

결국 try-catch로 모든 케이스를 감싸고, 로드 실패 시 이전 이미지를 유지하는 방어 로직을 넣었다. 코드의 절반이 에러 핸들링이 된 순간, "이게 슬라이드쇼 맞나?"라는 자괴감이 들었다.


3. 함정 2: "경로가 에디터랑 빌드에서 다르다"

Unity 개발자라면 공감할 클래식한 함정.

에디터에서는 Application.dataPathAssets/ 폴더를 가리키고, 빌드하면 _Data/ 폴더를 가리킨다. GuideImages 폴더를 exe 옆에 두려면:

basePath = Path.GetFullPath(Path.Combine(Application.dataPath, ".."));
// 빌드: exe_Data/../ = exe 폴더
// 에디터: Assets/../ = 프로젝트 루트

이 한 줄 찾는데 빌드 3번 뽑았다. "에디터에서 잘 되는데 빌드하면 안 돼요" — Unity 개발자의 영원한 악몽.


4. 함정 3: "날씨 API, 생각보다 까다롭다"

OpenWeatherMap API를 붙였다. 파주시청 좌표(37.759°N, 126.780°E)로 현재 날씨와 온도를 가져온다.

간단해 보이지만:

  • API 키가 없거나 만료되면? → 무한 에러 로그 폭탄

  • 네트워크가 끊기면? → UI에 빈 칸이 뜸

  • 날씨 아이콘은? → API가 아이콘 코드만 줌 → 별도 URL로 이미지 다운 → Texture2D → Sprite 변환

결국 모든 실패 케이스에 "--°C", "날씨 정보 없음" 같은 폴백 텍스트를 넣었다. 무인 키오스크에서 에러 팝업이 뜨면 아무도 닫아줄 사람이 없으니까.

if (string.IsNullOrEmpty(apiKey) || apiKey == "YOUR_API_KEY_HERE")
{
    Debug.LogWarning("API 키가 설정되지 않았습니다");
    yield break;  // 조용히 포기
}

"조용히 포기"가 이 프로젝트의 에러 핸들링 철학이 되었다.


5. 함정 4: "운영자가 개발자가 아니다"

기술적으로 완성해도 끝이 아니었다. 이걸 운영할 사람은 IT 전공자가 아니다.

  • GuideConfig.txt를 메모장으로 열어서 숫자 하나 바꾸는 게 전부인데, 그 "전부"가 어려운 사람들이 있다

  • "폴더에 이미지 넣으세요"라는 말을 이해 못 할 수 있다

그래서 Python으로 운영 매뉴얼 PPT를 자동 생성하는 스크립트(make_ppt.py)까지 만들었다. 8페이지짜리 파워포인트가 코드 한 번 실행으로 나온다. 시작/종료 방법, 이미지 교체 방법, 에러 대처법, 긴급 연락처까지.

슬라이드쇼 만드는 프로젝트에서 슬라이드(PPT)를 만드는 코드를 짜고 있는 아이러니.


6. 기술 스택 — "이게 슬라이드쇼에 필요한 거 맞아?"

기술쓴 이유Unity 6 (6000.0.61f1)세로형 풀스크린 + 실시간 UI 갱신URP (Universal Render Pipeline)2D UI 렌더링 최적화TextMesh Pro한글 폰트 깨짐 방지OpenWeatherMap API실시간 날씨UnityWebRequest + Coroutine비동기 네트워크 통신System.IO파일 시스템 폴링python-pptx운영 매뉴얼 자동 생성

슬라이드쇼 하나에 Unity 6 + REST API + 파일 시스템 감시 + PPT 자동생성. 스펙시트만 보면 무슨 대형 프로젝트 같다.


7. 결론 — "단순한 건 없다"

사진 돌아가게만 해주세요

이 한마디에서 시작해서, 핫리로드, 에러 핸들링, 날씨 API, 운영 매뉴얼 자동화까지. 클라이언트가 말하는 "간단한 거"는 절대 간단하지 않다.

하지만 이런 프로젝트가 실력을 키운다. 화려한 게임이나 대규모 서비스가 아니어도, 현장에서 죽지 않는 소프트웨어를 만드는 경험은 어디서도 쉽게 얻을 수 없다.

무인 키오스크 앞에서 내 코드가 24시간 돌아가고 있다는 사실 — 그게 이 프로젝트의 가장 큰 보상이다.


읽기 도구

6분 읽기

이 글이 도움이 되었나요?

다음으로 읽기