본문 바로가기

유니티스킬

유니티 모바일 2D 도트게임 해상도 설정unity mobile 2D pixel game resolution setting

###계속 수정할 예정###

1]기본 모바일 세팅


1.빌드세팅 - 안드로이드 - 스위치플래폼

2.플레이어세팅 - 안드로이드타겟 - 디폴트오리엔테이션 - 가로면 랜드스케이프레프트(가로좌우회전생각해볼것), 세로면 포트레이트

2.게임뷰스크린 원하는 해상도설정(대개 16:9)

1920 1080

1600 900

1360 768

1280 720

1024 600 

800 480

640 360



2]2d세팅


1.sprite를 그릴때

16x16, 32x32, 48x48처럼 미리 ppu(한칸이 몇픽셀인가,스프라이트가 한칸을 넘을수있다[던그리드아이템이 한칸을 벗어난점을 참고])를 생각해두고 제작


스프라이트시트를 그릴때 - 시트에 넣을 이미지중에 가장큰 이미지의 x크기,y크기 * 이미지개수로 새그림창만들기

그리드옵션을 위에x,y사이즈로 설정 - 각그리드 정중앙에 오도록 복사&배치


멀티플스프라이트로 제작하여 오토스플라이스를 이용할때 유니티는 가로순으로 이름을 부여한다

고로 같은 내용을 가로로 배치하는게 나중에 편하다

2.sprite를 import할때

sprite베이스 - inspector - texture type - sprite(2d and ui)

- pixels per unit조정(작아질수록 씬상에서 크게보임, UI Canvas에서는 적용X)

- filter mode - point(no filter)

- compression - none

-max size조정 (하단 미리보기 창으로 사이즈확인)

-stripe mode - single 또는 multiple

-multiple일시 stripe editor- slice - grid by cellsize이용(각sprite 거리이격시 padding이용)

-pivot은 BottomCenter으로 하는것이 유리하며 나중에 다시 수정해 중심을 통일시켜야 자연스러운

 애니메이션 구현가능

- mipmap 체크해제(기본)


3.2d세팅

main camera오브젝트 - camera - clear flag - solid color

- projection - othographic(기본)

- size - Orthographic size = ((Vertical Resolution)/(PPUScale * PPU)) * 0.5

Quality settings - rendering - antialiasing - disabled

- anisotropic flitering - disabled


3]픽셀세팅


1.Font 설정
Font 를 Pixel 스럽게(?) 표현하기 위해서 빈 오브젝트를 생성하고 아래 스크립트를 추가

public Font[] fonts;

void Start () {
  //폰트가 Pixel Perfect 하게 보이도록 설정
  for(int i=0; i<fonts.Length;i++) {
    fonts[i].material.mainTexture.filterMode = FilterMode.Point;
  }
}

Inspector 에서 폰트를 등록해서 실행하게 되면 좀더 Pixel 스러운 결과를 얻을 수 있음.


2.픽셀퍼펙트 카메라

windows - package manager - all - 2d pixel perfect camera - 설치

메인카메라 컴포넌트에 pixel perfect camera붙이기

assets for pixel per unit과 reference resolution 적용

업스케일 적용(잘모르겠다.테스트해볼것)

2.1위에 것들이 잘되지 않는다면 https://blog.naver.com/gold_metal/220886179355 적용할것



????????????????????????????????????????????????????????????????

https://www.youtube.com/watch?v=VDcWSEs856k

?????????????????????????????????????????????????????????????????????????



3]UI 해상도조절


2.Canvas오브젝트의 Canvas Rendermode - camera


3.Canvas오브젝트의 Canvas Scaler - Scale With Screen Size

Reference Resolution - 원하는 해상도(x,y)입력

Screen Match Mode - Match Width Or Height

Match - 가로 화면이라면 Height, 세로 라면 Width로 하는 경우가 많습니다(게임뷰스크린 바꿔가며 테스트할 것)


4.이후 Canvas내부 오브젝트의 Rect Transfrom의 앵커들을 각 오브젝트의 위치(↖↗↘↙↑↓→←)8방향에 맞게 빨간점 뜨게 지정해준다.

또한 비슷한 UI오브젝트(메뉴의 버튼들)같은 경우 Layout Group(Vertical or Horizontal)으로 묶어준다.


********************************************????????*******************************************************************

Reference Pixels Per Unit

- 스프라이트에 이 'Pixels Per Unit' 설정이 적용된 경우 스프라이트의 1 픽셀이 UI의 유닛 하나에 해당합니다.



시중 폰 해상도표

https://zetawiki.com/wiki/%EC%8A%A4%EB%A7%88%ED%8A%B8%ED%8F%B0_%ED%95%B4%EC%83%81%EB%8F%84,_%ED%99%94%EB%A9%B4%EB%B9%84%EC%9C%A8


아이폰x 해상도 설정
https://orcacode.tistory.com/entry/Unity%EC%97%90%EC%84%9C-iPhone-X%EB%A5%BC-%EB%8C%80%EC%9D%91%ED%95%98%EB%8A%94-%EA%B0%84%ED%8E%B8%ED%95%9C-%EB%B0%A9%EB%B2%95

***********************************************?????????****************************************************************



4]게임 해상도조절


1. GameManager 또는 Camera 또는 Canvas오브젝트(게임시작후 쭉 유지,씬 마다 실행되는)에 Awake()함수에 다음내용추가

Screen.SetResolution( Screen.width, (Screen.width * 16) / 9 , true); //16:9로 개발시

Screen.sleepTimeout = SleepTimeout.NeverSleep;//어느정도 입력이 없을시에 화면어두워지면서 잠기는데 

그때 다시 풀필요 없이 쭉 실행되게끔함