Inflearn brand logo image

인프런 커뮤니티 질문&답변

허인호님의 프로필 이미지
허인호

작성한 질문수

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

씬로딩 관련한 질문드립니다.

해결된 질문

작성

·

60

0

강의에서는 타이틀씬에서 로비로 갈때만 Progressbar 효과를 적용하시고 InGame로 갈때는 페이드로 하셨는데 MMORPG같은 다른 게임에서는 맵 이동 시마다 전환씬이 따로 존재하는 것 같은데 타이틀씬을 재사용한 방식일까요?? 아니면 현재 페이드방식처럼 로비씬에서 해당 UI만 띄워서 하는건가요??

답변 2

1

BurningCarrot님의 프로필 이미지
BurningCarrot
지식공유자

안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다.

 

AAA 게임에서는 전환 씬을 따로 만들기도 하지만 그 정도 규모의 게임이 아닐 경우 그렇게 까지 할 필요는 없습니다. 씬 전환 시 전용 UI를 활성화하고 씬 로딩이 끝났을 때 해당 UI를 비활성화 하는 것으로도 충분합니다. 유니티에서는 씬 로딩이 끝났을 때 호출되는 콜백이 있습니다. 그 콜백이 호출될 때 UI를 비활성화 처리하시면 됩니다. 예시 코드를 첨부합니다.

 

    private void OnEnable()
    {
        SceneManager.sceneLoaded += OnSceneLoaded;
    }

    private void OnDisable()
    {
        SceneManager.sceneLoaded -= OnSceneLoaded;
    }

    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        //씬 전환 UI 비활성화 처리
        UIManager.Instance.CloseSceneLoadingUI();
    }

    public void LoadScene(SceneType sceneType)
    {
        Logger.Log($"{sceneType} scene loading...");

        Time.timeScale = 1f;
        //씬 전환 UI 활성화(SceneLoader 하위에 씬전환 UI를 배치하든 UIManager에 하든 그것은 상관 없음) 
        UIManager.Instance.OpenSceneLoadingUI();  //UIManager에 씬전환 UI가 있다고 가정했을 경우. UI 활성화/비활성화 함수는 자체적으로 구현하셔야 합니다.
        SceneManager.LoadScene(sceneType.ToString());
    }

0

안녕하세요, 인프런 AI 인턴입니다. 허인호님.

질문해 주신 내용은 게임의 씬 전환 방식에 관한 부분인데요, MMORPG와 같은 게임에서는 각기 다른 방식으로 씬 전환을 사용할 수 있습니다. 이를 두 가지 주요 방법으로 설명드리겠습니다:

  1. 전환 씬을 활용한 방법:

    • MMORPG에서는 주로 전환 씬을 별도로 만들어 각 맵 이동 시마다 이 전환 씬을 거치는 방식으로 진행할 수 있습니다.
    • 이 전환 씬에서는 로딩 시간을 감추기 위해 Progress Bar 같은 UI 요소를 사용하여 사용자가 기다리는 동안의 부담을 줄여줄 수 있습니다.
    • 전환 씬을 공용으로 만들어 타이틀, 로비, 인게임 등 과는 분리되며 모든 이동 시 재사용이 가능합니다.
  2. 현재 씬 내에서 UI 효과를 활용하는 방식:

    • 현재 구조로도 가능하며, 로비에서 인게임으로의 전환을 페이드 효과나 다른 UI 효과로 처리할 수 있습니다.
    • 로비 씬 내에 자체 전환 UI (예: Progress Bar) 를 띄워 로딩을 감추고 자연스러운 전환이 가능하도록 할 수 있습니다.
    • 모든 전환을 독립적으로 관리하기보다는, 전환 효과를 각 씬의 일부로 두어 관리가 십니다.

실제 MMO 게임은 자주 사용되는 씬 전환 기능을 최적화하고, 유연성을 높이기 위해 별도의 전환 씬을 사용하는 경우가 많습니다. 효율적인 방법은 게임의 장르, 로딩 속도, 씬의 복잡도에 따라 다를 수 있어 유연하게 대응하는 것이 중요합니다.

유사한 질문과 답변들은 아래의 게시물을 참고하시기 바랍니다:
- UI Canvas가 여러개일 경우: 로딩 및 UI 전환에 대한 다양한 방식과 해결 방법을 확인하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

허인호님의 프로필 이미지
허인호

작성한 질문수

질문하기