유니티 개발

유니티 빌드시 프레임저하, fps30 고정된 이슈 해결방법

삼색치즈 2025. 1. 10. 22:48
반응형

유니티 빌드후 휴대기기에서 테스트를 해보는데 화면반응이 느리게 보이는 프레임 저하가 일어난 느낌이 드시나요?

그 해결방법을 여기서 알려드릴게요!

 

1. 유니티에서 FPS넣기

 

먼저 fps가 표기되는 코드를 씬에 추가해서 확인을 해보니,

유니티에는 60~300 fps까지도 찍히는데, 빌드해서 휴대기기로 확인해보니 30fps 전후로만 고정되어 보이더라고요!

 

유니티 엔진

 

그래서 저는 빌드 씬에 fps 스크립트를 이렇게 넣었습니다(아래에 메모장 파일 첨부할게요)

화면 하단 왼쪽에 까만색 텍스트로 표기한 코드에요

 

using UnityEngine;

public class FPSDisplay : MonoBehaviour
{
    private float deltaTime = 0.0f;

    void Update()
    {
        // Calculate delta time for FPS calculation
        deltaTime += (Time.deltaTime - deltaTime) * 0.1f;
    }

    void OnGUI()
    {
        // Set up GUI style and size
        int width = Screen.width, height = Screen.height;
        GUIStyle style = new GUIStyle();

        // Set font size to half of the original size
        style.fontSize = height / 50;
        style.alignment = TextAnchor.LowerLeft; // Align text to the bottom-left
        style.normal.textColor = Color.black; // Set text color to black

        // Calculate FPS
        float msec = deltaTime * 1000.0f;
        float fps = 1.0f / deltaTime;
        string text = string.Format("{0:0.0} ms ({1:0.} fps)", msec, fps);

        // Add some padding on the left and bottom
        float padding = 10.0f; // Padding in pixels
        Rect rect = new Rect(padding, height - height / 50 - padding, width, height / 100);

        // Draw FPS text
        GUI.Label(rect, text, style);
    }
}

FPS표기 삽입 코드.txt
0.00MB

 

2. 설정에서 플레이어 셋팅 바꿔주기

퀄리티 기본 설정에서 VSync Count를 Don't Sync로 셋팅해줍니다.

 

3. 씬 실행에서 Application.targetFrameRate = XX;로 세팅해서 원하는 FPS값을 넣어주기

 

60으로 해도되고 성능이 좋아야하는 게임이라면 더높게 해도됩니다.

저는 라이트한 캐주얼게임이지만 스크롤 기능도 필요하고 배경 이미지 사이즈가 많이 커서 60대는 되야해서 65로 했어요! 

 

이렇게 해서 빌드 해보니 안드로이드 기기에서 FPS가 65 전후로 고정된걸 확인할 수 있었어요! 훨씬 쾌적~!

1번의 FPS표기를 구현하는 방법은 다른 별도 플러그인이나 더 좋은 방법이 있을 수 있습니다.

저는 추후 치트기능 넣으면서 제대로 된 방법으로 적용할 예정이에요. (지금 코드는 GPT로 생성했습니다^^;;)

 

저야말로 초보지만, 프레임드랍 이슈로 당황하신 초보분들께 도움이 되었으면 좋겠습니다!

감사합니다~!

반응형