dev
[Unity] Drag Threshold
####
2022. 8. 15. 13:00
반응형
높은 DPI 장치에서 실행 중인 Unity 프로젝트가 있는 경우 손가락 터치의 아주 작은 움직임이 단순한 터치가 아닌 스크롤로 해석될 수 있기 때문에 버튼을 누르는 데 문제가 있을 수 있습니다.
그렇다면 DPI(인치당 도트 수) 는 무엇입니까? DPI는 인치당 장치 픽셀 수입니다. DPI가 높으면 픽셀 크기가 작아집니다. 즉, High-DPI 장치에는 더 많은 픽셀이 존재합니다.
장면에 캔버스를 추가할 때마다 EventSystem이 자동으로 계층에 추가됩니다. EventSystem 구성 요소에는 드래그 를 위한 소프트 영역을 픽셀 단위 로 지정하기 위한 드래그 임계값 이라는 속성이 있습니다.
Drag Threshold의 기본값은 5픽셀로 높은 DPI 장치의 경우 매우 작습니다. 아래 스크립트는 Screen.dpi 에 따라 Drag Threshold를 업데이트합니다 .
public class DragThresholdUtil : MonoBehaviour {
void Start () {
int defaultValue = EventSystem.current.pixelDragThreshold;
EventSystem.current.pixelDragThreshold =
Mathf.Max(
defaultValue ,
(int) (defaultValue * Screen.dpi / 160f));
}
}
예를 들어, "Drag Threshold"는 480 DPI 장치인 경우 "15" 픽셀로 업데이트됩니다.
이 매직넘버 160 이 어디에서 왔는지 궁금할 것입니다. 중형 화면 장치에 대해 허용되는 DPI 값입니다.
반응형