ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [유니티] 21강 해상도1 종횡비
    [유니티] 기본 2022. 6. 5. 00:23
    728x90

    우리가 만든 게임을 서비스를 한다고 가정해보자. 모바일에는 애플, 안드로이드에 사용되고 있는 단말기만 하더라도 엄청나다. 물론 PC에 서비스한다면 모바일 만큼은 아닐텐지만.. 그래도 많다.

    모든 해상도에 맞게 각각 개발한다는건 불가능에 가깝다.

     

    그럼 우리는 어떤 식으로 개발을 해야 할까....

    게임제작 할때 가장 먼저 정하고 진행되어야 할만큼 아주 중요한 사항이다.

    가장 대중적인 해상도에 최고로 잘 최적화 할것인지, 제작 게임 특색을 가장 잘 살릴수 있는 해상도에 최적화할지..개발 해상도가 결정 되어야 그래픽 팀에서 컨셉에 맞게 작업이 진행될 것이다.

    게임 할때 해상도 설정할때, 전체화면이라고 이렇게 왜곡되는걸 본적 있을것이다. 이 옵션은 보기도 싫고 없는게 더 낫다.

    약간의 아쉬움은 남지만, 남는 여백이 크지 않다면 이 정도면 괜찮다. 가로나 세로가 길 경우, 영역을 지정하는 함수이다.

    요즘 게임은 왠만하면 전체 영역을 다쓴다.

    아래 예는 개발 사이즈로 1280x720 최적화하지만, 만약 2:1 해상도라면 가로를 고정하고 세로를 변경하여 1280x640으로 변하는 구조이다. 반대로 세로를 고정하고 가로를 변경하는 것도 고려해볼만하다.

    OpenGL이나 기타 로 레벨 프로그램을 해본 사람이라면 다 봐온 용어라 익숙할 것이다.

    학습 겸 짚고만 넘어가고, 자세한건 실전 과정에서 더 다룬다.

    1. viewport rect부분에서 단위는 절대 크기가 아니라 상대 크기라고 보면 된다. 0이 가장 작고, 1이 가장 큰 값이다.

    만약 x = 0.1, w = 0.8이라고 하면 왼쪽의 10% 그리지 않고, 80% 영역만 그린다는 말이다.

    Camera.main.rect 값을 넣는것이, viewport rect를 지정하는것과 같다.

     

    Screen.SetResolution함수는 view rect의 가로와 세로를 해상도 값으로 지정하는 함수다.

    참고로 Screen.width, Screen.height은 디바이스의 물리적인 크기이다. 그러니 개발 사이즈를 고려해서 비율 계산이 가능하다.

     

    OpenGL에서는 glViewport로 물리적인 크기중에 사용할 영역을 지정했고, Projection Matrix로 해상도의 크기를 결정한다.

    Screen.SetResolution 과 Camera.main.rect 2가지 요소로 하니까 거의 사용법은 같다고 볼수 있다.

    오픈지엘은 Modelview Matrix를 하나만으로 운영이 가능하지만, 유니티에서는 transform이 객체별로 가지고 있는점이 다르다.

     

    2. glClearColor와 glClear에 해당된다.

     

    -끗-

Designed by Tistory.