Unity 中的身份验证
本教程将指导您在 Unity 项目中设置 Unity 身份验证。Unity 身份验证可让您使用 Unity 的身份工具包管理和验证游戏中的用户。我们将介绍设置身份验证、将其集成到您的项目中以及实现登录功能所需的步骤。
先决条件
- Unity 已安装 Hub 和 Unity 编辑器。
- Unity 启用了 Unity 服务的项目。
- Unity 帐户和活跃的项目ID。
步骤 1:在 Unity 仪表板中设置 Unity 身份验证
- 登录到Unity仪表板。
- 选择您的项目或创建一个新项目。
- 导航到 "Services" 部分下的 Authentication。
- 单击“Activate”按钮启用身份验证。
- 根据需要配置身份验证设置,例如用户属性、登录方法和访问控制。
步骤 2:安装 Unity 身份验证包
为了在您的项目中使用 Unity 身份验证,您需要安装适当的包。
- 打开你的 Unity 项目。
- 导航到 Window > Package Manager。
- 在包管理器中搜索Authentication。
- 单击Install将身份验证包添加到您的项目。
步骤 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}");
}
}
}
要调用此方法,请在 Unity 中创建一个 UI 表单,供用户输入他们的电子邮件和密码,然后从 UI 按钮的 onClick 事件调用 SignInWithEmailAsync
。
第 5 步:退出
对于用户管理,您可能还想实现退出功能。具体方法如下:
public void SignOut()
{
AuthenticationService.Instance.SignOut();
Debug.Log("Signed out successfully.");
}
当您想将用户退出游戏时,请调用此方法。
结论
我们介绍了如何在 Unity 项目中设置 Unity 身份验证,包括初始化、匿名登录、电子邮件登录和退出功能。使用 Unity 身份验证,您可以更有效地管理用户并增强游戏的安全性。有关更高级的设置,例如自定义登录提供程序或链接多种身份验证方法,请参阅官方 Unity 文档。