Unity での認証

このチュートリアルでは、Unity プロジェクトで Unity 認証を設定する手順を説明します。Unity 認証を使用すると、Unity の Identity ツールキットを使用してゲーム内のユーザーを管理および認証できます。認証を設定し、プロジェクトに統合し、サインイン機能を実装するために必要な手順について説明します。

前提条件

  • Unity ハブと Unity エディターがインストールされました。
  • Unity Unity サービスが有効になっているプロジェクト。
  • Unity アカウントとアクティブなプロジェクト ID。

ステップ1: UnityダッシュボードでUnity認証を設定する

  1. Unity ダッシュボード にログインします。
  2. プロジェクトを選択するか、新しいプロジェクトを作成します。
  3. "Services" セクションの Authentication に移動します。
  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 ドキュメントを参照してください。