public class MultiScaleCamera : MonoBehaviour
{
public enum ScalePolicy
{
SHOW_ALL,
EXACT_FIT,
FIXED_WIDTH,
FIXED_HEIGHT,
NO_BORDER,
STRETCH
}
public float desiredWidth;
public float desiredHeight;
public float pixelsToUnits;
public ScalePolicy scalePolicy;
void Start()
{
if (scalePolicy == ScalePolicy.SHOW_ALL) return;
float desiredRatio = desiredWidth / desiredHeight;
float currentRatio = (float)Screen.width / (float)Screen.height;
float differenceInSize = desiredRatio / currentRatio;
float desiredOrthographicSize = desiredHeight / 2 / pixelsToUnits;
float targetOrthographicSize = 0.0f;
switch (scalePolicy)
{
case ScalePolicy.EXACT_FIT:
Camera.main.aspect = desiredRatio;
if (currentRatio >= desiredRatio)
{
targetOrthographicSize = desiredOrthographicSize * differenceInSize;
}
else
{
targetOrthographicSize = desiredOrthographicSize;
}
break;
case ScalePolicy.FIXED_WIDTH:
targetOrthographicSize = desiredOrthographicSize * differenceInSize;
break;
case ScalePolicy.FIXED_HEIGHT:
targetOrthographicSize = desiredOrthographicSize;
break;
case ScalePolicy.NO_BORDER:
if (currentRatio >= desiredRatio)
{
targetOrthographicSize = desiredOrthographicSize * differenceInSize;
}
else
{
targetOrthographicSize = desiredOrthographicSize;
}
break;
case ScalePolicy.STRETCH:
targetOrthographicSize = desiredOrthographicSize;
Camera.main.aspect = desiredRatio;
break;
}
Camera.main.orthographicSize = targetOrthographicSize;
}
}
해상도 대응 관련해서 찾다가 나온 스크립트인데,
PixelsToUnits 라는 부분이 무엇을 의미하는지, 저기에 어떤 값을 넣어야하는지 모르겠어서 질문드립니다.
감사합니다.
PPU에 대해 알아보아요.
이 스크립트는 MultiScaleCamera라는 이름의 MonoBehaviour 클래스를 정의하고 있습니다. 이 클래스는 카메라에 여러 가지 확대/축소 정책(scale policies)을 적용하기 위한 것입니다.여기서 사용하는 ScalePolicy는 다음과 같은 열거형 값들을 가지고 있습니다 1. SHOW_ALL: 화면에 모든 것이 표시되도록 카메라를 조절합니다. 2. EXACT_FIT: 지정된 비율에 맞게 카메라를 조절합니다. 3. FIXED_WIDTH: 지정된 너비에 맞게 카메라를 조절합니다. 4. FIXED_HEIGHT: 지정된 높이에 맞게 카메라를 조절합니다. 5. NO_BORDER: 화면에 빈 공간이 없도록 카메라를 조절합니다. 6. STRETCH: 지정된 비율에 맞게 카메라를 늘이거나 줄입니다.
Start() 메서드는 스크립트가 처음 시작될 때 실행되며, 이 스크립트에서는 scalePolicy에 따라 카메라의 확대/축소 정책을 적용합니다. 코드에서는 현재 화면의 비율과 원하는 비율을 계산한 다음, 원하는 orthographicSize를 구하고 scalePolicy에 따라 카메라의 orthographicSize를 조절합니다. 이렇게 하면 카메라의 뷰가 원하는 비율과 크기에 맞게 조절됩니다. 이 스크립트를 사용하려면 Unity에서 카메라 게임 오브젝트에 추가하고, 원하는 desiredWidth, desiredHeight, pixelsToUnits 및 scalePolicy 값을 설정하면 됩니다. 이렇게 하면 해당 스케일 정책이 적용된 카메라를 사용할 수 있습니다.
이 스크립트에서 사용되는 설정값들은 다음과 같은 의미를 가지고 있습니다: 1. desiredWidth: 카메라가 표시하려는 원하는 가로 크기입니다. 이 값은 화면의 가로 크기를 조절하는 데 사용됩니다. 예를 들어, 16:9 비율의 화면을 원한다면 이 값을 16으로 설정할 수 있습니다. 2. desiredHeight: 카메라가 표시하려는 원하는 세로 크기입니다. 이 값은 화면의 세로 크기를 조절하는 데 사용됩니다. 예를 들어, 16:9 비율의 화면을 원한다면 이 값을 9으로 설정할 수 있습니다.
3. pixelsToUnits: 이 값은 유니티에서 픽셀과 단위 사이의 비율을 정의합니다. 예를 들어, 이 값이 100이면 100픽셀이 1 유니티 단위로 간주됩니다. 이 값은 카메라의 orthographicSize를 계산할 때 사용됩니다. 4. scalePolicy: 이 값은 카메라가 적용할 스케일 정책을 결정합니다. ScalePolicy 열거형 값 중 하나를 사용하여 카메라의 확대/축소 정책을 설정할 수 있습니다. 이 값에 따라 카메라가 다양한 방식으로 화면 크기를 조절합니다. -gpt4-
고마워요 GPT웨건!
다들 답변주셔서 정말 감사합니다! 도움되었습니다