[이븐아이 게임톤] 개발 - 레터박스, ShopUI

레터 박스

  • 게임화면에 해상도를 Main Camera 기준 1080 * 1920으로 고정
    • 카메라 depth -2로 지정하여 UI 보다 아래 쪽에 그려지게 고정
    • 이에 따라 grid background와 tilemap 각각 -3, -2로 변경
  • UI 해상도 Camera 기준 1080 * 1920 으로 고정
    • Render mode : Screen Space - Camera로 설정
    • depth -1로 지정
  • 위 설정만 진행하였을 시, 에디터 상에서는 적용되나 안드로이드 빌드 후, 레터박스 적용이 안되는 현상 발견
  • [Build Settings] - [Player Settings] - 안드로이드 탭의 Resolution Scaling 의 Resolution Scaling Mode를 LetterBoxed로 설정 이후 문제 해결 (올바른 해결책인지는 모름…)

레터박스 코드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 레터박스 설정을 위한 셋팅
public class CameraResolution : MonoBehaviour
{
    private void Awake()
    {
        Camera camera = GetComponent<Camera>();
        Rect rect = camera.rect;
        float scaleHeight = ((float)Screen.width / Screen.height) / ((float) 1080 / 1920);
        float scaleWidth = 1f / scaleHeight;
        if(scaleHeight<1)
        {
            rect.height = scaleHeight;
            rect.y = (1f - scaleHeight) / 2f;
        }
        else
        {
            rect.width = scaleWidth;
            rect.x = (1f - scaleWidth) / 2f;
        }
        camera.rect = rect;
    }

    private void OnPreCull() => GL.Clear(true, true, Color.black);
}
using UnityEngine;

// UI 레터박스 설정을 위한 셋팅
public class CameraResolutionForUI : MonoBehaviour
{
    private void Awake()
    {
        AdjustCanvasForLetterbox();
    }

    private void AdjustCanvasForLetterbox()
    {
        Camera camera = GetComponent<Camera>();
        Rect rect = camera.rect;
        float scaleHeight = ((float)Screen.width / Screen.height) / ((float)1080 / 1920);
        float scaleWidth = 1f / scaleHeight;

        if (scaleHeight < 1)
        {
            rect.height = scaleHeight;
            rect.y = (1f - scaleHeight) / 2f;
        }
        else
        {
            rect.width = scaleWidth;
            rect.x = (1f - scaleWidth) / 2f;
        }

        camera.rect = rect;
    }
}

UI

  • Speed Toggle 버튼 이미지
    • 이미지 아래 자식 이미지 생성해서 IsGameSpeedIncreased 변수의 불린 값에 의해 자식 오브젝트 SetActive false/true 하는 형식으로 구현

  • ShopUI
    • 제작 완료
    • 스크롤 뷰 UI 사용

버그 수정

  • 2배속으로 플레이하다가 스킬카드 선택하고 다시 배속돌아옴(유지안됨) => 해결 완 속도 유지
  • 스킬이미지 안에 Lv 텍스트 흰색으로 변경됨

© 2023 Jinsoo Lee. All rights reserved.

Powered by Hydejack v9.1.6