Project Settings > Graphics에서 파티클 셰이더가 Always Included Shaders에 유지된 화면
Project Settings > Graphics에서 파티클 셰이더가 Always Included Shaders에 유지된 화면

값이 사라진 게 아니라 잘린 겁니다

에디터는 선택한 재질의 배리언트를 전부 컴파일합니다. 빌드는 실제 씬에서 참조되는 것만 남기고 나머지를 잘라냅니다. 이걸 스트리핑이라고 부릅니다. 파티클이나 런타임에 코드로 켜는 키워드는 빌드 시점에 참조가 없어서 가장 먼저 잘립니다.

Development Build로 재현을 고정합니다

Player Settings에서 Development Build와 Script Debugging을 켜고 같은 씬을 다시 빌드합니다. 디버그 빌드에서도 안 보이면 배리언트가 아니라 재질 참조 누락입니다. 디버그에서만 보이면 스트리핑이 범인입니다.

잘린 배리언트를 되살리는 두 가지

  1. Project Settings > Graphics > Shader Loading의 Always Included Shaders에 문제 셰이더를 넣습니다. 빌드 크기를 그대로 먹으니 문제 셰이더만 넣습니다.
  2. 필요한 키워드 조합을 담은 Shader Variant Collection을 만들어 Graphics 설정에서 포함합니다.
// 런타임 키워드 토글은 빌드에서 잘리기 쉽습니다
mat.EnableKeyword("_EMISSION");
// -> 같은 조합이 에디터 재질에 미리 켜져 있어야 빌드에 남습니다

품질별 URP Asset이 다르면 렌더러도 다릅니다

Quality 설정마다 URP Asset이 갈려 있으면 에디터와 빌드가 서로 다른 렌더러를 씁니다. 렌더러 목록과 그래픽 API 조합(Vulkan/GLES)을 양쪽에서 맞춰 봅니다.

몇 개가 잘렸는지는 로그에 숫자로 남습니다

빌드 로그에 제거된 배리언트 수와 유지된 셰이더가 찍힙니다. 이 두 줄이 추측을 끝냅니다.

[Build] Shader stripping: 1,204 variants removed
[Build] Always Included: URP/Particles/Unlit (1 variant kept)
검증 범위

공식 문서 대조

검증일

Unity 공식 문서와 본문의 코드·절차를 대조해 공개 준비 상태로 전환했습니다. 별도 Unity 프로젝트나 실기기에서 직접 재현한 결과는 아니며, 특정 버전·기기 문의가 들어오면 해당 환경에서 후속 확인합니다.

확인한 공식 문서Unity 셰이더 배리언트 ↗