공부/인프런 - 고박사

[뒤끝 강의] 온라인 게임 개발 #01 - 뒤끝 SDK 설치 및 준비

셩잇님 2023. 12. 4. 16:50
반응형

 

 

뒤끝

 

 뒤끝 계정 생성 및 프로젝트 생성에 관한 내용은 따로 작성하지 않는다. 😜

 


 

유니티 프로젝트 생성 및 설정

 

 유니티 허브에서 새로운 프로젝트를 생성한 뒤 뒤끝 홈페이지에서 문서 - 뒤끝 SDK를 눌러 최신 버전의 뒤끝 SDK를 다운로드 받는다. 이 후 다운로드한 패키지 파일을 유니티 프로젝트에 임포트 한 후 Unty - The Backend - Edit Setting을 눌러준다. 뒤끝 콘솔에서 생성한 프로젝트에 들어 간 후 인증 정보 탭에 들어가 Client App Id와 Signature Key를 TheBackendSettings 객체 Client App Id와 Signature Key에 넣어준다.

 

뒤끝 초기화

 

 뒤끝 서버 사용을 위한 BackendManager 스크립트를 생성 후 아래와 같이 적어줍니다. 

 

using UnityEngine;
using BackEnd;  // 뒤끝 SDK

public class BackendManager : MonoBehaviour
{
    private void Awake()
    {
        // 뒤끝 서버 초기화
        BackendSetup();
    }

    private void BackendSetup()
    {
        // 뒤끝 초기화
        var bro = Backend.Initialize(true);

        // 뒤끝 초기화에 대한 응답값
        if (bro.IsSuccess())
        {
            // 초기화 성공 시 statusCode 204 Success
            Debug.Log($"초기화 성공 : {bro}");
        }
        else
        {
            // 초기화 실패 시 statusCode 400대 에러 발생
            Debug.Log($"초기화 실패 : {bro}");
        }
    }
}

 

 위와 같이 작성 한 후 빈 오브젝트를 생성한 뒤 이름을 BackendManager로 변경한 후 해당 스크립트를 붙여줍시다. 이 후 게임을 실행하면, 서버 접속에 시도하는데 이 때 성공하면 "초기화 성공 statusCode 204"가 출력되는 것을 볼 수 있습니다. 😎

 


 

배경과 로딩 UI

 

 로고 씬 제작을 위한 폰트 사용을 위해 구글에 Notosans를 검색하여 다운받아 NotoSansKr - Bold, Regular를 프로젝트에 넣어준 후, Window - Tmp - FontAssetCreator를 열어 폰트를 제작해줍니다. 이 후 Background와 Slider를 통해 로고 씬을 만들어 줍니다. 만드는 방법은 영상 속에 아주 자세하게 나와있으므로 다루지 않습니다. 🤭

 

Progress.cs

 

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using TMPro;

public class Progress : MonoBehaviour
{
    [SerializeField] private Slider sliderProgress;
    [SerializeField] private TextMeshProUGUI textProgressData;
    [SerializeField] private float progressTime; // 로딩바 재생 시간

    public void Play(UnityAction action = null)
    {
        StartCoroutine(OnProgress(action));
    }

    private IEnumerator OnProgress(UnityAction action)
    {
        float current = 0;
        float percent = 0;

        while (percent < 1)
        {
            current += Time.deltaTime;
            percent = current / progressTime;

            // Text 정보 설정
            textProgressData.text = $"Now Loading... {sliderProgress.value * 100:F0}%";
            // Slider 값 설정
            sliderProgress.value = Mathf.Lerp(0, 1, percent);

            yield return null;
        }

        // action이 null이 아니면 action 메소드 실행
        action?.Invoke();
    }
}

 

 위와 같이 스크립트를 모두 작성한 후 Progress 오브젝트에 작성한 스크립트를 붙여줍니다. 이 후 Progrss 스크립트의 객체들을 각각 다음과 같이 채워줍니다.

 

채우기 전, 후

 


 

LogoScenario.cs

 

using UnityEngine;

public class LogoScenario : MonoBehaviour
{
    [SerializeField] private Progress progress;
    [SerializeField] private SceneName nextScene;

    private void Awake()
    {
        SystemSetup();
    }

    private void SystemSetup()
    {
        // 활성화되지 않은 상태에서도 게임이 계속 진행
        Application.runInBackground = true;

        // 해상도 설정 (9:18.5, 1440x2960)
        int width = Screen.width;
        int height = (int)(Screen.width * 18.5f / 9);
        Screen.SetResolution(width, height, true);

        // 화면이 꺼지지 않도록 설정
        Screen.sleepTimeout = SleepTimeout.NeverSleep;

        // 로딩 애니메이션 시작, 재생 완료시 OnAfterProgress 실행
        progress.Play(OnAfterProgress);
    }

    private void OnAfterProgress()
    {
        Utils.LoadScene(nextScene);
    }
}

 

 마찬가지로 LogoScenario 스크립트를 추가하여 위와 같이 작성한 뒤, 유니티에서 빈 오브젝트를 추가하여 스크립트를 붙여줍니다. Progress 변수에 Progress 오브젝트를 등록하여 줍니다. 게임을 실행하면 로딩이 진행되고, 로딩이 완료되면 OnAfterProgress 함수가 실행됩니다.

 

 

반응형