Unity - 특강) 모바일 프로젝트 세팅

땡구의 개발일지·2025년 8월 18일

Unity마스터

목록 보기
76/78
post-thumbnail

모바일 프로젝트에서 빌드와 관련한 팁들을 알려주는 특강

🚩 전처리 문구

#으로 시작하는 기법이다. 유니티 에디터일 때와 빌드일 때 각각 다르게 동작시키고자 한다면 쓰는 방법이다.

#if UNITY_EDITOR
	에디터 테스트일때
    다운로드 대신에, 컴퓨터에 이미 있던거 쓰기
    로그인도 Google Play Store 대신 이메일로 빠르게 자동로그인
#else
	빌드에서 테스트 할 때
    CSV, Database 다운로드해서 사용
    로그인도 구글 플레이 스토어로 하기
#endif

전처리 구문에서는 동일한 변수라 하더라도 재선언이 가능하다. 이는 #조건문 즉, 전처리가 코드 자체를 편집하는 것이기 때문이다.

UNITY_EDITOR // 유니티 에디터일 때
UNITY_ANDRIOD // 안드로이드 빌드일 때
UNITY_STANDALONE_WIN // 윈도우 빌드일  때

🔧 전처리 구문 추가


여기서 문자를 추가해서, 테스트 버전으로 돌릴 수 있음. 그때마다 편집한 다음 Apply해서 쓴다.

#if TEST_VERSION
	// 테스트 버전 코드
#elif RELEASE_VERSION
	// 정식버전 버전 코드
#endif

🚩 디버그

안드로이드 빌드에서는 PC 환경 처럼 디버그 로그를 볼수 없기 때문에, 에셋을 추가해서 확인해야한다

🎯 Log Viewer


간략하지만, 빌드된 게임 화면에서 로그 및 프로파일러를 볼 수 있게 하는 에셋이다.

🔧 빌드 디버깅

  • Development Build: 개발용으로 빌드할 때 사용할 수 있는 옵션이다. 빌드 후 프로그램을 실행했을 때 에디터 상에서 로그를 확인할 수 있다.
  • Autoconnect Profiler: 프로파일러와 연결된다.


이 상태로 ADB로 안드로이드 기기와 연결 후, Build And Run을 누르면 빌드 파일에서 생성되는 디버그 로그프로파일러를 에디터 상에서 볼 수 있게 된다.

  • Deep Profiling Support: 성능을 조금 포기하고, 정확한 디버깅을 지원한다.
  • Script Debugging은 디버그 로그가 발생된 스크립트의 위치까지 나오게 한다.

🚩 Patch Build


build Settings에서 사용 가능한 설정이다. 새로이 빌드를 만들려고 할 때, 소스 코드만 수정 되었을 때 사용하는 빌드 방법이다. 대부분의 빌드에서 변경되는 내용은 소스 코드뿐이다. 빌드에서 소스 코드 부분만 따로 빌드를 한다.

프로젝트가 클 수록, 빌드 시간을 단축 시킬 수 있다.

  • Clean Build
    기존의 빌드 정보를 사용하지 않고, 아예 처음부터 빌드할 때 사용한다.

🚩 모바일 UI


PC나 콘솔과는 다르게 모바일의 경우, 기종마다 화면 비율이 가지각색이다. 휴대폰의 경우에는 펀치홀(전면 카메라 등)도 고려해서 UI를 배치해야 한다!

🦋 시뮬레이터


게임 창에서 Simulator로 변경하면, 안드로이드 기기의 화면을 테스트할 수 있다.

테스트 가능한 기기들을 확인해서 선택할 수 있다.

펀치 홀 문제 때문에 지원하고자 하는 기기들을 전부 확인하면서 UI를 배치해야 한다.

💡 Safe Area


대부분의 기기들이 이런식으로 세이프 에이리어 설정이 되어 있다. 게임의 출력 화면을 세이프 에이리어로 한정해서 빌드하면, 상당히 수월하게 작업할 수 있다. 앞선 경우들과 같이 해상도 상에서 UI가 막힐 일이 없다.

Screen.safeArea;

Screen 클래스의 safeArea로 해당 변수에 접근할 수 있다. 이를 통해 바로 해상도를 설정해주면 된다.

using UnityEngine;

[RequireComponent(typeof(RectTransform))]
public class SafeAreaPanel : MonoBehaviour
{
    private RectTransform panel;
    private Rect lastSafeArea;

    void Awake()
    {
        panel = GetComponent<RectTransform>();
        ApplySafeArea();
    }

    void Update()
    {
        if (lastSafeArea != Screen.safeArea)
            ApplySafeArea();
    }

    private void ApplySafeArea()
    {
        Rect safeArea = Screen.safeArea;

        // Anchor 단위(0~1)로 변환
        Vector2 anchorMin = safeArea.position;
        Vector2 anchorMax = safeArea.position + safeArea.size;
        anchorMin.x /= Screen.width;
        anchorMin.y /= Screen.height;
        anchorMax.x /= Screen.width;
        anchorMax.y /= Screen.height;

        // SafeArea 반영
        panel.anchorMin = anchorMin;
        panel.anchorMax = anchorMax;
        panel.offsetMin = Vector2.zero;
        panel.offsetMax = Vector2.zero;

        lastSafeArea = safeArea;
    }
}

💥 UI 해상도 대응

화면 비율이 늘어나고 줄어듦에 따라, UI 요소의 크기가 변하지 않게 해보자.
일반적인 비율인 9:16 비율을 먼저 잡아둔 다음에, 다른 비율의 경우에는 늘어나게만 처리하면 된다.
UI는 상단, 하단, 좌, 우 배치해야할 것들이 있다.
각각에 맞게 패널을 생성한다. 앵커 설정도 해준다.

위 화면과 같이 하이라키를 설정한다.

패널 UI의 픽셀 기준으로 설정한다.

UI 요소인 Image를 각각의 배치하려는 패널의 하위로 넣고, 앵커 피벗을 Pixel 단위로 설정하면된다.

이렇게 하면 비율이 변하더라도 UI요소의 크기가 패널을 부모로 하기 때문에 알아서 변한다.

📱 IPad. Galaxy Tab

단, Ipad와 같은 태블릿 PC의 경우에는 해상도가 3:4 이기 때문에 UI 프레임이 원하는 데로 되지 않고 깨질 확률이 매우 높다... 잊지 말고 이 경우까지 테스트해서 UI 배치를 하자.

profile
개발 박살내자

0개의 댓글