오늘은 제가 유니티를 공부하던 중 배웠던 것을 포스팅 할 것 입니다.


바로 '유니티2D 해상도' 입니다.


저 같은 경우는 유니티로 2D 게임을 만들때 가장 어려웠던 부분 중 하나가 해상도입니다. 설정한 해상도 (예를 들어 1280x720)에 2D Sprite를 유니티로 배치하면 정한 해상도와는 크기가 다르게 보여집니다.


오늘은 이 것을 해결 해 볼 것 입니다.


우선 Camera 컴포넌트를 보겠습니다.




우리가 봐야할 곳은 1번 Projection과 2번 Size 입니다.


1번 Projection

Projection 항목에는 두 가지가 있습니다.


- Perspective보통 3D에서 쓰입니다. 현실 세계속 카메라와 비슷한 카메라라고 생각하시면 됩니다. 

원근감이 적용돼 카메라와의 거리가 멀수록 오브젝트의 크기가 작게 보입니다.

- Orthographic : 보통 2D에서 쓰입니다. Perspective와는 다르게 원근감이 없는 카메라 입니다. 

원근감이 적용되지 않아 카메라와의 거리가 멀든 가깝든 오브젝트는 항상 똑같은 크기로 보여집니다. 


일단 우리는 2D 게임을 제작하니 Orthographic 으로 셋팅 하겠습니다.


2번 Size

Size 항목은 Projection 항목이 Orthographic으로 셋팅 되어야만 활성화 되는 항목입니다. 

Size는 카메라 확대에 관한 것이라고 보면 되겠습니다. 


Size의 숫치가


- 작으면 : 화면이 확대됩니다..

- 커지면 : 화면이 축소됩니다.


제가 위에서 Orthographic 뷰는 원근감이 없어 카메라와의 거리 상관없이 크기는 항상 똑같다고 했죠?

Size는 Orthographic에서의 카메라 줌이라고 생각하시면 됩니다.


유니티 카메라를 정한 해상도와 똑같이 보이게 할려면 Size 항목을 조절하시면 됩니다.


일단 게임을 만드실 때 정해둔 해상도가 있으실 것 입니다. 저 같은 경우는 1280x720 으로 하겠습니다.


Size 항목에 자신이 정해둔 해상도 세로 사이즈의 반(저 같은 경우 '360') 을 넣어 주시면 여러분이 생각하신 해상도와 똑같이 카메라가 보여지게 됩니다. 


아직 끝난 것이 아닙니다. Unity의 띄울 Sprite도 옵션을 셋팅 해줘야합니다.


Sprite를 눌러보시면 Inspector가 다음과 같이 보입니다.


우리가 봐야할 곳은 Pixels Per Unit입니다.


Pixels Per Unit

Sprite의 픽셀과의 비율입니다.  기본적으로 100으로 설정되어 있을 것 입니다.

예를 들어 64x64 사이즈의 Sprite가 있으면 유니티에서는 Scale XY를 100으로 맞춰주어야만 실제 Sprite 사이즈로 보여지는 것입니다.


Scale을 바꾸지 않고 Pixels Per Unit을 1로 바꾸면 실제 Sprite 픽셀 사이즈와 똑같이 보여지게 됩니다.


아래는 결과 화면입니다.



Camera 컴포넌트의 Size 보시면 720의 반인 360 으로 셋팅 되어있는 것을 볼 수 있습니다.

그리고 Pixels Per Unit도 1로 설정되어 있습니다.


그럼 카메라에 보여지는 것이 실제 해상도와 같은지 포토샵에서 같은 해상도로 보여드리겠습니다.



둘이 캡처의 크기가 달라서 조금 달라 보일 수 도 있지만 

둘의 크기는 정확히 똑같습니다. 유니티 카메라에서 실제 해상도와 똑같이 보이는 것입니다.

안녕하세요. 오늘은 Unity에서 Resource.Load로 Sprite 로딩 시 NULL이 리턴되는 문제를 다뤄볼려고 합니다.

경로가 틀려서 NULL이 리턴되는 경우는 너무 당연 한 것이기 때문에 다루지 않겠습니다.


다음 코드에 경우 리턴된 Sprite는 NULL 입니다. (Path가 올바른 경로라고 가정)


1
2
Sprite sprite = Resources.Load("Path"as Sprite;
 
cs


분명 보기에는 이상한 것이 없습니다. 


저 코드에 문제는 바로 "Resources.Load" 함수에서 Object Type으로 반환한 Sprite 객체를

"as Sprite"로 형 변환을 했기 때문입니다. 왜 그런지는 저도 잘 모르겠습니다.


그러므로 아래와 같이 수정하면 올바르게 Sprite를 반환 할 것 입니다.


1
2
Sprite sprite = Resources.Load<Sprite>("Path");
 
cs


'programing > Unity' 카테고리의 다른 글

Unity2D Sprite 실제 픽셀 사이즈와 맞추기  (2) 2019.11.03

+ Recent posts