일지

유니티 화면 비율 고정 처리...23

niamdank 2021. 12. 10. 20:12

전체 화면에서 비율 고정 처리

전체 화면(Alt + Enter)에 진입했을 때 화면이 모니터 모양으로 바뀌는 게 아닌 지정된 비율로 적용되도록 처리한다.

 

ResolutionController.cs

public class ResolutionController : MonoBehaviour
{
	// 생략

	private bool m_fullscreen;

	// 생략

	/// <summary>
	/// 초기화 하며 필요한 값을 미리 가져온다.
	/// </summary>
	private void Initialize()
	{
		// 생략
		m_hwnd = FindWindow(null, "FixedResolution_DetectByCursorIcon");
		GetWindowRect(m_hwnd, out m_wndRect);

		m_updateState = UpdateState.Waiting;

		UpdateDebugText();

		StartCoroutine(SetFixedResolution());
	}

	private void Update()
	{
		IntPtr hCursor = GetCursor();

		if (m_fullscreen != Screen.fullScreen)
		{
			m_fullscreen = Screen.fullScreen;

			if (m_fullscreen)
			{
				int width = Display.main.systemWidth;
				int height = Display.main.systemHeight;
				GetAdjustedSize(ref width, ref height, ResizeOption.Horizontal);

				Screen.SetResolution(width, height, true);
			}
			else
			{
				Screen.SetResolution(m_screenSizeX, m_screenSizeY, false);
			}
		}
        
		// 생략
	}

 

기본적으로 전체화면으로전체 화면으로 전환했을 때 모니터의 물리적인 크기를 기준으로 비율을 정해서 전체 화면으로 전환시키게 했다. 추가로, 최초 실행 시 화면 비율을 적용하지 않는 것을 발견해서 최초 실행 시에 화면 비율을 변경하도록 처리했다.