유니티 에디터 상에서 에셋번들로 불러온 모델링 쉐이더가 핑크색으로 보일 때
게임의 데이터 분리를 위해 에셋번들을 제작하고, 캐릭터를 불러오는 테스트 작업을 진행중입니다.
문제점
프로젝트를 빌드 한 뒤, 안드로이드 기기상에서 테스트할때는 정상적으로 보이나,
유니티 에디터상에서 테스트를 할땐 모델링 쉐이더가 누락된것 처럼 핑크색으로 표시됩니다.
( * 만약 모바일에서도 핑크색으로 표시된다면, 쉐이더 자체가 모바일을 지원하지 않거나, 누락된 상태이니 다시 한번 확인해보세요. )
[좌측이 에셋번들로 불러온 모델링, 우측은 씬에 곧바로 배치해놓은 모델링 ]
해결방안
우리가 개발하면서 사용하는 유니티 에디터의 환경은 안드로이드가 아니라 Standalone ( 윈도우 / 맥 ) 환경 입니다.
그렇기에 Standalone의 그래픽 API 를 모바일과 같은 OpenGL 환경으로 변경해주면 됩니다.
[ Payer Settings 설정 ]
* PlayerSettings -> PC, Mac and Linux Settings -> Other Settings 로 이동.
* Auto Graphcis API for Windows 체크 해제
* ' + ' 버튼 클릭 후 OpenGLES3 추가
* ' = ' 를 눌러서 OpenGLES3가 최상단에 위치하도록 이동.
* 유니티 재시작 후 테스트.
[ 재시작 이후 DX11 에서 OpenGL ES 3.1 AEP 로 표시가 변경된걸 볼수 있다. ]
변경 이후 에셋번들의 데이터는 로드가 재대로 되는데, 기존에 있던 데이터가 안나온다면, 쉐이더 컴파일 오류입니다.
기존에 있던 쉐이더 삭제하신다음 유니티에 다시 임포트해보시면 정상적으로 돌아가시는걸 확인하실 수 있습니다.
+ 사실 타겟 플랫폼대로 빌드해서 실행해보면 정상적으로 잘 나온다.
유니티에디터 상에서 로드했을때도 정상적으로 불러오는 방식을 하고 싶다면 전처리를 이용해 에디터상에서만 쉐이더 경로를 재설정해주는 방식을 쓰면 됩니다.
private void Awake()
|
번들로 만들 에셋의 최상위 오브젝트에 해당 스크립트를 동작시키면 됩니다.