오즈 라엘 : Unity 4 . 6 프로젝트 Unity 5 로 의 마이 그레이 션 후기 
 유니티 5 가 출시 된 지 보름 이 지나 고 있 습니다 . 많 은 분 들 이 유니티 4 의 프로젝트 를 유니티 5 로 마이 그레 이 션 하 는 것 에 대하 여 걱정 을 하 고 계십니다 . 하지만 업그레이드 과정 은 복잡 할 게 없 습니다 . 물론 설정 을 좀 건드려 줘야 하 는 부분 들 도 생기 고 귀 챦은 일 들 도 생기 긴 하 지만 그리 큰 노력 이 들 지 는 않 습니다 . 또한 , PBS 및 실시간 GI 때문 에 무조건 느려 지 는 것 이 아닌가 걱정 도 하 시 는 분 들 도 계십니다 . 하 지만 PBS 가 아닌 기존 레거시 셰이더 도 이용 가능 하 며 실시간 GI 도 사용 여부 를 선택 가능 하 므로 성능 하락 에 대한 걱정 은 안 하 셔도 됩니다 . 
 어서 와 유니티 5 는 처음 이 지 ? 
 그래서 제 가 개인 적 으로 유니티 4 . 6 으로 만들 고 있 던 프로젝트 를 유니티 5 로 업그레이드 하 고 그 과정 을 기술 하 고자 합니다 . 물론 매우 작 은 프로젝트 라서 큰 도움 이 되 실 런지 는 모르 겠 습니다 . 다만 참고 자료 정도 로 생각 해 주 시 면 감사 하 겠 습니다 . 유니티 5 로 빌드 한 프로젝트 를 구글 플레이 에 올려 두 었 습니다 . 아직 테스트 버 젼 이 므로 게임 의 완성도 는 신경 쓰 지 마시 고 작동 여부 정도 만 확인 해 보 시 면 될 것 같 습니다 : ) 
 우선 유니티 5 로 업그레이드 하 기 전 에 반드시 프로젝트 를 백업 해 두 시 길 바랍니다 . 업그레이드 를 시작 하 면 돌이킬 수 가 없 으므로 혹시 모를 불상사 는 항상 대비 해 두 셔야 합니다 . 백업 후 유니티 5 를 실행 하 시 면 유니티 4 와 는 다르 게 프로젝트 를 선택 하 는 창 이 먼저 뜹니다 . 
 업그레이드 하 려는 프로젝트 를 선택 하 면 잠시 후 다음 과 같이 업그레이드 를 진행 하 겠 다는 창 이 뜹니다 . upgrade 버튼 을 눌러서 업그레이드 를 진행 합니다 . 
 이후 유니티 가 업그레이드 를 알 아선 진행 합니다 . 시간 이 좀 지난 후 다음 과 같 은 창 이 뜹니다 . 유니티 5 로 넘어오 면서 스크립트 API 들 이 변경 된 사항 들 이 있 습니다 . 이 를 자동 으로 바꿔 주 겠 단 소리 인데 Go Ahead 를 선택 하 여 진행 해줍니다 . 
 이 과정 들 이 매우 오랜 시간 이 소요 됩니다 . 침착 함 을 가지 고 커피 한 잔 의 여유 를 즐기 세요 : ) 
 오류 사항 들 
 업그레이드 가 완료 되 고 나 면 수 많 은 에러 상황 들 이 발생 할 것 입니다 . 그런 것 없이 완벽 하 게 마 이 그레 이 션 되 었 다면 당장 꿈 에서 깨어나 세요 용사 여 ! 꿈 이 아니 라면 축 하 드립니다 . 당장 사표 한 장 집어던지 고 뛰쳐나가 서 로또 한 장 사세요 : ) 
 맨 처음 눈 에 들어오 는 것 은 스카이 박스 일 것 입니다 . 스카이 박스 의 십중팔구 는 이미지 가 정상 적 으로 나오 지 않 을 것 입니다 . 유니티 5 에서 는 스카이 박스 가 HDR 로 그려지 는데 유니티 4 에서 설정 했 던 LDR 스카이 박스 를 가져오 면 아래 와 같이 깨 집니다 . 이 는 간단히 수정 가능 합니다 . 해당 스카이 박스 를 선택 후 inspector 창 에 나오 는 Fix now 버튼 을 누르 시 면 해결 됩니다 . 
 셰이더 에 문제 가 발생 하 시 는 분 도 계실 수 있 습니다 . 유니티 에서 기본 적 으로 제공 하 는 셰이더 만 이용 한다면 문제 가 발생 하 지 않 으실 겁니다 . 하지만 커스텀 셰이더 를 이용 하 는 경우 는 라이팅 이 정상 적 으로 그려지 지 않 을 수 있 습니다 . 저 같 은 경우 는 다음 과 같이 이상 하 게 셰이더 가 망가져 보였 습니다 . 
 이 는 셰이더 로 넘겨 주 는 normal 값 때문 에 발생 하 는 문제 입니다 . 유니티 5 에서 는 셰이더 로 넘어오 는 vertex 의 normal 값 이 메시 의 스케일링 이 적용 되 서 넘어옵니다 . 따라서 항상 길이 가 1 이 라는 보장 이 없 습니다 . 또한 , unity _ Scale . w 가 작동 하 지 않 습니다 . 그렇 기 때문 에 셰이더 에서 normalize 를 해 주 어야 합니다 . 이 는 binormal , tangent 모두 동일 하 게 적용 됩니다 . 또한 , 기존 에 는 라이트 의 atten 값 을 두 배 로 뻥튀기 해 줘야 만 했 는데 이제 는 그러 지 않 아도 됩니다 . 기타 셰이더 관련 가이드 를 참고 하 여 수정 하 시 면 정상 적 으로 보입니다 . ( 본 포스팅 마지막 의 링크 들 참고 ) 
 오브젝트 의 스케일 이 틀어져 있 는 경우 도 존재 합니다 . 기존 에 는 FBX 익스 포트 시 적용 된 스케일 이 정상 적 으로 적용 되 지 않 는 문제 가 있 었 는데 이제 는 정상 반영 이 됩니다 . 따라서 FBX 메시 들 의 스케일 이 변경 되 는 것 들 이 있 습니다 . FBX import 설정 에서 스케일 을 변경 시켜 주 면 됩니다 . 
 간혹 skinned mesh 가 깨지 는 경우 도 있 습니다 . 서로 다른 레거시 에니 메이 션 과 메시 를 휴머노이드 로 조합 한 이루어진 오브젝트 가 간혹 깨지 는 경우 가 있 습니다 . 아직 정확 한 조건 은 확인 하 지 못하 였 습니다 . 이런 경우 는 답 이 없 습니다 만 매우 드문 케이스 이 므로 크 게 걱정 하 지 는 않 으셔도 될 듯 합니다 . 
 유니티 5 에서 는 라이트 맵 솔루션 이 비스트 에서 인 라이튼 으로 바뀌 었 습니다 . 따라서 라이트 맵 관련 설정 을 다시 손봐 주 셔야 합니다 . 기존 버 젼 에서부터 만들 던 모바일 프로젝트 라면 실시간 GI 를 사용 하 지 않 는 경우 가 대부분 일테 니 Baked GI 외 다른 옵션 들 은 다 꺼주 시 면 됩니다 . 
 GI 관련 하 여 라이팅 타입 속성 이 추가 되 었 습니다 . 라이팅 오브젝트 의 인스펙터 창 에 Baking 타입 을 설정 할 수 있 는 콤 보 박스 가 있 습니다 . Baked 로 설정 해 두 면 실시간 라이팅 에 는 반영 되 지 않 고 라이트 맵 에 만 반영 되 는 라이트 가 됩니다 . 제 프로젝트 의 경우 에 는 실시간 라이팅 을 전혀 사용 하 지 않 고 IBL 만 사용 하 므로 모든 라이트 를 Baked 로 설정 해 두 었 습니다 . 
 또한 , 오브젝트 의 인스펙터 창 에서 도 속성 들 이 추가 된 것 들 이 있 으니 이 를 건드려 줘야 합니다 . Cast Shadow , Receive Shadows , Use Light Probes 는 기존 에 도 있 는 속성 이 였으나 기존 설정 이 날라갔 을 수 도 있 으니 한번 더 확인 해 줘야 합니다 . Reflection Probes 는 새로 생긴 속성 이 므로 체크 해제 해 주 어야 의미 없 는 성능 소모 를 줄일 수 있 습니다 . 
 유니티 5 에서 는 메카 님 이 대폭 개선 되 었 습니다 . 기존 버 젼 호환 이 최대한 작업 이 되 어 있 긴 하 지만 트랜 지 션 이 누락 되 는 경우 도 가끔 존재 합니다 . 또한 state 에 Write Defaults 라는 속성 이 생김 으로 인해서 기존 에 예측 했 던 동작 과 다르 게 보이 는 경우 도 존재 할 수 있 습니다 . 그냥 메카 님 은 전체 적 으로 한 번 검토 해 보 시 는 것 이 좋 을 듯 합니다 . 
 제 프로젝트 는 이러 한 수정 사항 들 이 있 었 습니다 만 프로젝트 마다 수정 필요 사항 들 이 각기 다를 것 입니다 . 더 자세 한 내용 은 아래 업그레이드 가이드 들 을 참 고 바랍니다 . 
 공식 메뉴 얼 ( 영문 ) : 
 http : / / docs . unity 3 d . com / Manual / UpgradeGuide 5 . html 
 한글 번역본 : 
 http : / / jinhomang . tistory . com / 107 
 http : / / jinhomang . tistory . com / 108 
 http : / / jinhomang . tistory . com / 109 
 http : / / jinhomang . tistory . com / 110 
 http : / / jinhomang . tistory . com / 111 
 결론 적 으로 말씀 드리 자면 , 작 은 프로젝트 혹은 개발 초기 단계 의 프로젝트 들 은 유니티 5 로 업그레이드 시 큰 무리 는 없 어 보 입니다 . 유니티 직원 으로서 는 무조건 유니티 5 로 업그레이드 하 라고 말씀 드리 고 싶 지만 , 현실 적 으로 는 규모 가 크 거나 출시 임박 인 프로젝트 는 한 번 검토 를 해 보 시 는 것 이 좋 을 듯 합니다 . 
 뭐 어찌 되 었 든 유니티 5 의 세계 로 오 신 것 을 환영 합니다 ! 
 이미지 : REPUBLIQUE ( Recreated in Unity 5 ) 
 태그 : unity , 유니티 5 , unity 5 
 http : / / jinhomang . tistory . com / trackback / 107 2015 / 03 / 23 16 : 07 
 밸리 : IT 2015 / 03 / 23 16 : 07 
 헬 이 네 2016 / 12 / 20 21 : 46 # 삭제 답글 
 헬 이 네 ㅜ . ㅜ 
 다음 글 : new GUI ( ugui ) 최적화 팁 
 이전 글 : Unity 에서 쿨타임 버튼 구현 하 기 
 unity 2 D Unity 3 D unity 5 Unity drawcall 유니티 유니티 2 D unitytips gui ugui