카메라 비율 고정
2022. 6. 16. 22:26ㆍUnity/스크립트 응용
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class camera : MonoBehaviour
{
#region Pola
private int ScreenSizeX = 0;
private int ScreenSizeY = 0;
#endregion
#region metody
#region rescale camera
private void RescaleCamera()
{
if (Screen.width == ScreenSizeX && Screen.height == ScreenSizeY) return;
float targetaspect = 16.0f / 9.0f;
float windowaspect = (float)Screen.width / (float)Screen.height;
float scaleheight = windowaspect / targetaspect;
Camera camera = GetComponent<Camera>();
if (scaleheight < 1.0f)
{
Rect rect = camera.rect;
rect.width = 1.0f;
rect.height = scaleheight;
rect.x = 0;
rect.y = (1.0f - scaleheight) / 2.0f;
camera.rect = rect;
}
else // add pillarbox
{
float scalewidth = 1.0f / scaleheight;
Rect rect = camera.rect;
rect.width = scalewidth;
rect.height = 1.0f;
rect.x = (1.0f - scalewidth) / 2.0f;
rect.y = 0;
camera.rect = rect;
}
ScreenSizeX = Screen.width;
ScreenSizeY = Screen.height;
}
#endregion
#endregion
#region metody unity
void OnPreCull()
{
if (Application.isEditor) return;
Rect wp = Camera.main.rect;
Rect nr = new Rect(0, 0, 1, 1);
Camera.main.rect = nr;
GL.Clear(true, true, Color.black);
Camera.main.rect = wp;
}
// Use this for initialization
void Start () {
RescaleCamera();
}
// Update is called once per frame
void Update () {
RescaleCamera();
}
#endregion
}
728x90
'Unity > 스크립트 응용' 카테고리의 다른 글
mirror 네트워크 (0) | 2022.09.11 |
---|---|
화면 끝에서 다른 쪽 끝으로 이동 (0) | 2022.06.16 |
JSON 데이터 저장 (0) | 2022.06.16 |