Unity 로 어느 정도의 개발이 마무리되고 APK를 뽑은 뒤 게임을 확인한 결과 치명적인 오류를 발견했다..
바로 모든 핸드폰 기종에서 그런건 아니지만 쉐이더 처리한 모든 것들이 보여지지 않는 다는 문제가 생겼다.
문제 1. 버튼의 쉐이더가 보이지 않음
문제 2. 인게임 안의 쉐이더와 파티클 쉐이더가 깨지고 무지개 빛으로 나타남
이 문제를 해결하기 위해 해봤던 방법들을 작성해두려고한다.
1. 인게임에서 적용한 Material Resources 이동 (💣 실패 )
유니티는 내부적으로 특수 목적으로 동적 파일을 사용할 때 Resources라는 고정적인 이름을 가진 파일을 만들어서 저장하면, 동적 로드를 지원하는 기능을 제공
> 관련된 부분은 프리팹으로 만들어서 상관은 없을꺼같지만 해당 방법으로 해결했다는 글을 보게되었다.
문제의 원인으로 메터리얼를 로드하는데의 이유로 판단을 하여 Resources에 추가하였다.
차후 Addressables로 변경해야할 것 같다.
2. Build Profiles > Android > Auto Graphics API 설정 (💣 실패 )
: 런타임때 적합한 API를 자동으로 설정을 해준다고하여 선택하였다.
3. Texture > Android > Override For Android (💣 실패 )
텍스처에 문제가 있는 건가 하여 특정 플랫폼의 기본값을 오버라이드 할 수 있다고 하여 해보았다.
4. Enable GPU Instancing (💣 실패 )
여러가지 이유를 서칭하는 중 커스텀 쉐이더를 적용했을 때의 문제로 Enable GPU Instancing을 해제하면 해결된다고 하셨으나.. 내가 만든 커스텀 쉐이더에는 해당 부분이 존재하지 않았다.
5. Edit > Project Settings > Graphics > Shader Settings - Always Included Shaders (💣 실패 )
사용했던 Shader를 추가해서 포함시켜야한다고한다.
🤔 의문 ? 그럼 쉐이더를 몇 백개가 있는 경우 몇 백개를 등록해야한다는 것일까...? 아닐꺼같은데 좀 더 알아봐야할 것 같다.
6. Bulid Profiles > Platform Setting > Texture Compression (💣 실패 )
: 텍스처 압축 포맷 문제인가하고 ETC2로 선택되어 있던 것을 ASTC로 변경하였다.
- ASTC( Adaptive Scalable Texture Compression )
- ETC2( Ericsson Texture Compression )
이 두개의 압축 포맷을 유니티에서 일반적으로 사용되는 텍스처 압축 포맷이라고 한다.
이 두 개의 차이는 궁금한 부분이라 나중에 따로 포스팅을 작성해야겠다.
7. 문제가 생겼던 기기의 원인인가하여 기기에 대해 조사 ❗❗
문제가 생겼던 기기 : 갤럭시S23과 플립
알아보니 갤럭시 S23과 필립같은 경우 쉐이더 오류가 있는 것같았다.
Vulkan일 때 버그가 생긴다고하여 기존 Auto Graphics API를 해제하고 OpenGLES3로 사용하고 해결할 수 있었다..!
참고 사이트
https://openplay.tistory.com/5
https://coding-shop.tistory.com/157
'Unity' 카테고리의 다른 글
[ Unity ] Unity의 이벤트 함수 주기 (0) | 2024.09.13 |
---|---|
[ 내일배움캠프 ] TIL.20 - 애니메이션 블렌드 ( 4방향 애니메이션 ) (0) | 2024.05.13 |
[ 내일배움캠프 ] TIL.19 - 스크립터블오브젝트(Scriptable Object)? (0) | 2024.05.10 |
[ Unity ] 벡터(Vector) (0) | 2024.04.27 |
[ Unity ] RigidBody를 이용한 Player 이동 구현 (0) | 2024.04.21 |