Unity에서의 인증

이 튜토리얼은 Unity 프로젝트에서 Unity 인증을 설정하는 방법을 안내합니다. Unity 인증을 사용하면 Unity의 Identity 툴킷을 사용하여 게임에서 사용자를 관리하고 인증할 수 있습니다. 인증을 설정하고 프로젝트에 통합하고 로그인 기능을 구현하는 데 필요한 단계를 다룹니다.

필수 조건

  • Unity 허브와 Unity 편집기가 설치되었습니다.
  • Unity Unity 서비스가 활성화된 프로젝트입니다.
  • Unity 계정 및 활성화된 프로젝트 ID.

1단계: Unity 대시보드에서 Unity 인증 설정

  1. Unity 대시보드에 로그인하세요.
  2. 프로젝트를 선택하거나 새로운 프로젝트를 만드세요.
  3. "Services" 섹션에서 인증로 이동합니다.
  4. 활성화 버튼을 클릭하여 인증을 활성화하세요.
  5. 사용자 속성, 로그인 방법, 액세스 제어 등 필요에 따라 인증 설정을 구성합니다.

2단계: Unity 인증 패키지 설치

프로젝트에서 Unity 인증을 사용하려면 적절한 패키지를 설치해야 합니다.

  1. Unity 프로젝트를 엽니다.
  2. 창 > 패키지 관리자로 이동합니다.
  3. 패키지 관리자에서 Authentication을 검색하세요.
  4. 설치을 클릭하여 프로젝트에 인증 패키지를 추가합니다.

3단계: 초기화 스크립트 설정

게임에서 인증을 사용하려면 런타임에 Unity 서비스와 인증을 초기화해야 합니다. C# 스크립트(예: AuthenticationManager.cs)에 다음 코드를 추가하고 씬의 GameObject에 첨부합니다.

using UnityEngine;
using Unity.Services.Core;
using Unity.Services.Authentication;
using System.Threading.Tasks;

public class AuthenticationManager : MonoBehaviour
{
    async void Start()
    {
        await InitializeUnityServicesAsync();
    }

    private async Task InitializeUnityServicesAsync()
    {
        try
        {
            await UnityServices.InitializeAsync();
            Debug.Log("Unity Services initialized successfully.");

            if (!AuthenticationService.Instance.IsSignedIn)
            {
                await SignInAnonymously();
            }
        }
        catch (System.Exception e)
        {
            Debug.LogError($"Error initializing Unity Services: {e.Message}");
        }
    }

    private async Task SignInAnonymously()
    {
        try
        {
            await AuthenticationService.Instance.SignInAnonymouslyAsync();
            Debug.Log("Signed in anonymously.");
        }
        catch (System.Exception e)
        {
            Debug.LogError($"Error signing in anonymously: {e.Message}");
        }
    }
}

이 스크립트는 게임이 시작될 때 Unity 서비스를 초기화하고 사용자가 아직 로그인되어 있지 않으면 익명으로 사용자를 로그인시킵니다.

4단계: Unity 인증을 사용하여 로그인 구현

게임의 요구 사항에 따라 이메일이나 Google 로그인과 같은 특정 로그인 방법에 대한 옵션을 제공할 수도 있습니다. 아래는 Unity 인증을 사용하여 로그인을 구현하는 방법의 예입니다.

예: 이메일과 비밀번호로 로그인

using UnityEngine;
using Unity.Services.Authentication;
using System.Threading.Tasks;

public class AuthenticationManager : MonoBehaviour
{
    async void Start()
    {
        await InitializeUnityServicesAsync();
    }

    private async Task InitializeUnityServicesAsync()
    {
        try
        {
            await UnityServices.InitializeAsync();
            Debug.Log("Unity Services initialized successfully.");
        }
        catch (System.Exception e)
        {
            Debug.LogError($"Error initializing Unity Services: {e.Message}");
        }
    }

    public async Task SignInWithEmailAsync(string email, string password)
    {
        try
        {
            await AuthenticationService.Instance.SignInWithEmailAndPasswordAsync(email, password);
            Debug.Log("Signed in with email successfully.");
        }
        catch (System.Exception e)
        {
            Debug.LogError($"Error signing in with email: {e.Message}");
        }
    }
}

이 메서드를 호출하려면 사용자가 이메일과 비밀번호를 입력할 수 있는 UI 양식을 Unity에 만든 다음 UI 버튼의 onClick 이벤트에서 SignInWithEmailAsync를 호출합니다.

5단계: 로그아웃

사용자 관리를 위해 로그아웃 기능도 구현할 수 있습니다. 방법은 다음과 같습니다.

public void SignOut()
{
    AuthenticationService.Instance.SignOut();
    Debug.Log("Signed out successfully.");
}

사용자를 게임에서 로그아웃할 때마다 이 메서드를 호출합니다.

결론

Unity 프로젝트에서 초기화, 익명 로그인, 이메일 로그인 및 로그아웃 기능을 포함하여 Unity 인증을 설정하는 방법을 다루었습니다. Unity 인증을 사용하면 사용자를 보다 효과적으로 관리하고 게임의 보안을 강화할 수 있습니다. 사용자 지정 로그인 공급자 또는 여러 인증 방법 연결과 같은 고급 설정의 경우 공식 Unity 문서를 참조하세요.