top of page

빌드에서 셰이더가 사라진 날

작성자 사진: Marcel Dütscher
Marcel Dütscher
6월 27일
1분 분량

Unity 에디터에서는 모든 게 완벽했어요. 완성된 빌드에서는 분홍색 표면에 사라진 효과들이 나왔죠. 가장 고약한 Unity 함정 중 하나, 그리고 그 친척들 몇 가지를 소개할게요.


셰이더 스트리핑. 빌드할 때 Unity는 필요 없어 보이는 건 전부 내던져요. 셰이더도 포함해서요. 문제는 Shader.Find()로 런타임에 셰이더를 불러오면(물, 대기, 홀로그램 등에 쓰는 20개가 넘는 커스텀 셰이더가 그래요) Unity가 어떤 씬에서도 참조를 찾지 못한다는 거예요. 결과적으로 셰이더가 에디터에는 있고 빌드에서는 없어요. 해결책은 평범하지만 꼭 필요해요. 이런 셰이더는 전부 그래픽 설정의 Always Included Shaders 목록에 넣어야 해요. 그 뒤로 우리의 규칙은 이거예요. 새 셰이더? 바로 추가!


-1이었던 레이어. 비슷한 종류예요. 코드에서 이름으로 물리 레이어를 찾았거든요. 에디터에서는 잘 돼요. 빌드 서버의 배치 빌드에서는 그 레이어가 없어서 조회 결과가 -1이 되고, 그 레이어에 의존하는 모든 것이 조용히 이상하게 동작해요. 그 뒤로는 레이어를 이름이 아니라 고정된 인덱스로 참조해요.


교훈: Unity 에디터와 완성된 빌드는 서로 다른 세계예요. 에디터는 너그러워요. 모든 에셋, 모든 이름, 모든 셰이더가 손닿는 곳에 있으니까요. 빌드는 냉정해요. 그래서 우리는 클라이언트를 바꿀 때마다 에디터의 재생 버튼만 누르지 않고 실제 로컬 빌드 테스트를 해요. 시간은 더 걸려요. 그래도 부끄러운 릴리스를 여러 번 막아 줬어요.

최근 게시물

전체 보기
새 버전이 0.9.2가 아니라 2026.7.19인 이유 🗓️

오늘 업데이트하면 버전 0.9.1에서 2026.7.19로 껑충 뛰어요. 오타처럼 보이지만 의도한 결정이에요. 버전 방식을 “시맨틱” 버전에서 날짜 기반 버전(연.월.순번)으로 바꿨어요. 이유를 설명할게요. 옛 방식은 아무도 묻지 않는 질문에 답했어요. 시맨틱 버전(0.9.1, 1.2.3 …)은 소프트웨어 라이브러리 세계에서 왔어요. 거기서는 훌륭해요. 첫

 
 
대청소 완료: GitHub 캐시를 드디어 제대로 쓰게 됐어요 🧹

지난 기술 글에서 우리 빌드와 검사 파이프라인에 정말로 드는 비용을 재 봤고, 돈이 아니라 기다리는 시간과 저장 공간이 문제라는 걸 알게 됐어요. 그 글은 “정리 작업은 계획했지만 아직 하지 못했다”로 끝났죠. 생각보다 빨리 끝났어요. 오늘 낮부터 메인 브랜치에 들어가 있어요. 숫자를 보여 드릴게요. 결과부터요. 저장소의 캐시 사용량이 항목 63개에 5.3

 
 
한 달에 빌드 천 번 — 그런데 한 번도 돈이 들지 않아요 ⚙️

먼저 정정할 게 있어요. 이 글의 첫 버전은 GitHub 빌드 시간이 다 떨어져서 Pro 계정으로 올릴 수밖에 없었다고 썼어요. 그건 틀렸어요. 문서를 한 번만 봤어도 풀렸을 일이에요. 공개 저장소에서는 GitHub 빌드 시간이 무료예요. 아티팩트와 캐시도요. 저희 저장소는 5월 말부터 공개였으니, 단 1분도 돈을 낸 적이 없고 앞으로도 낼 일이 없어요.

 
 

댓글


더 이상 게시물에 대한 댓글 기능이 지원되지 않습니다. 자세한 사항은 사이트 소유자에게 문의하세요.
bottom of page