유니티에서 캔버스(Canvas)를 생성하면 다음과 같이 여러 컴포넌트가 기본적으로 생성된다.


-> Rect Transform, Canvas, Canvas Scaler, Graphic Raycaster


Canvas Scaler 컴포넌트는 캔버스 내 UI 요소의 전체적인 스케일과 픽셀 밀도를 제어하는 데 사용된다. 


스케일은 글꼴 크기와 이미지 경계 등 캔버스 아래의 모든 요소에 영향을 미친다.


쉽게 말해 화면의 크기 변화에 따른 UI크기 변화를 조절할 수 있다.




프로퍼티:

기능:

UI Scale Mode

캔버스에서 UI 요소가 스케일되는 방법을 결정합니다.

Constant Pixel Size

UI 요소가 화면 크기에 관계없이 동일한 픽셀 크기로 유지됩니다.

Scale With Screen Size

화면이 커질수록 UI 요소도 커집니다.

Constant Physical Size

화면 크기와 해상도에 관계없이 UI 요소가 동일한 물리적인 크기로 유지됩니다.

Constant Pixel Size를 사용할 경우 


유니티상에 개발 화면과 실제 디바이스 폰 화면 해상도가 크게 차이가 난다면, 폰에서 정말 콩알만하게 보이게 된다.


따라서, Scale With Screen Size 모드를 통해 화면이 커지면 UI 요소들도 커지도록 설정하는 것이 좋다.


여기서 Match로, 스케일링 레퍼런스로 너비 또는 높이를 사용할지, 아니면 둘 사이의 배합을 사용할지 결정합니다.



이 차이는 분명하다.


이 사진은 Constant Pixel Size을 적용한 것을 스마트폰에서 실행한 결과이다.


왼쪽 상단 버튼의 경우 새끼손가락으로 눌러야 터치 될 정도로 매우 작다.

 


이 글을 쓰게 된 이유이다.

Scale With Screen Size 모드를 사용하게 되면, 화면이 커지게 되면 UI도 커지게 할 수 있다.

이렇게 큼지막하게 나와 버튼 조작이 쉬워지고, 가운데 이미지도 시원시원하게 크게 나오게 된다.

Posted by sungho88
,

게임에는 반드시 설정 버튼이나 일시 정지를 통해 게임을 중단할 수 있어야 한다.


게임을 중단했을 때, 시간도 멈춰야 하며 게임 플레이 화면이 터치되서도 안된다.


유니티에서 화면은 기본적으로 Canvas로 구성하므로 Canvas를 하나 더 만들거나, Panel을 이용한다.


Canvas나 Panel이나 적용 방식은 동일하다.


 1. 시간을 멈춘다


Time.timeScale = 0;


반대는


Time.timeScale = 1;



2. 게임 플레이 화면 위에 또다른 화면을 오버랩해서 비활성화시킨다.


if(settingCanvas) settingCanvas.gameObject.SetActive(true);

if(settingCanvas) settingCanvas.gameObject.SetActive(false);


SetActive()를 사용해서

이렇게 해서, 껐다가 켰다가 할 수 있다.


위에 것은 settingCanvas를 활성화하겠다(일시 중지하겠다)
아래 것은 settingCanvas를 비활성화하겠다(다시 시작하겠다)


아예 사라지면 좀 이상하니까...


알파값을 넣어서 반투명으로 해보자. 이러면 화면 위에 화면이 올라온 것처럼 보이고 


반투명이라 게임 플레이 화면까지 보여서 좀 더 그럴듯해보인다.

Posted by sungho88
,

[소수점 처리]


소수점 처리를 위해 반올림 , 올림, 내림 함수가 존재한다.


유니티 소수점 처리는 보통 첫 번째 자리에서 이뤄진다.


[반올림]

Mathf.Round(float data) : 소숫점 첫 번째 자리에서 반올림. 반환형 float

Mathf.RoundToInt(float data) : 소숫점 첫 번째 자리에서 반올림. 반환형 int


[올림]

Mathf.Ceil(float data) : 소숫점 첫 번째 자리에서 올림. 반환형 float

Mathf.CeilToInt(float data) : 소숫점 첫 번째 자리에서 올림. 반환형 int


[내림]

Mathf.Floor(float data) : 소숫점 첫 번째 자리에서 올림. 반환형 float

Mathf.FloorToInt(float data) :  소숫점 첫 번째 자리에서 올림. 반환형 int

 

float형으로 기본적으로 반환되지만, int형으로 값을 받을 수도 있다.


ToInt를 기본함수 뒤에 붙여주면 int형으로 변환되어 반환된다.

Posted by sungho88
,