すべてを統合する - Steam でログインする - (Unity モジュール)
Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
備考
このチュートリアルモジュールは、Steamworks の制限により WebGL ビルドには適用されません。
UI を接続してプレイヤーが Steam でログインできるようにする
このチュートリアルでは、前のセクションで作成した Steam ログイン実装とログインメニューを接続する方法を学びます。
-
SinglePlatformAuthWrapper_Starterクラスを開き、以下の関数を追加します。この関数は Steam に認証チケットを取得するリクエストを送信し、それをプラットフォームトークンとして使用して AGS にログインします。Steam は WebGL ビルドではサポートされていないため、必ず#if !UNITY_WEBGLでラップしてください。#if !UNITY_WEBGL
private async void GetSteamAuthTicket(ResultCallback<string> resultCallback)
{
if (!SteamManager.Initialized)
{
BytewarsLogger.LogWarning(
"Failed to get Steam auth ticket. Steam API is not initialized. " +
"Try to open the Steam Client first before launching the game.");
resultCallback?.Invoke(Result<string>.CreateError(ErrorCode.NotImplemented, "Steam API is not initialized"));
return;
}
byte[] buffer = new byte[1024];
SteamNetworkingIdentity identity = new SteamNetworkingIdentity();
identity.SetGenericString(string.Empty);
// Request to get Steam auth ticket.
HAuthTicket request = SteamUser.GetAuthSessionTicket(buffer, buffer.Length, out uint ticketSize, ref identity);
Array.Resize(ref buffer, (int)ticketSize);
// Set request callback.
TaskCompletionSource<string> getAuthTicketTask = new TaskCompletionSource<string>();
Callback<GetAuthSessionTicketResponse_t> callback = Callback<GetAuthSessionTicketResponse_t>.Create((GetAuthSessionTicketResponse_t response) =>
{
if (response.m_hAuthTicket == request && response.m_eResult == EResult.k_EResultOK)
{
string sessionTicket = BitConverter.ToString(buffer).Replace("-", string.Empty);
getAuthTicketTask.TrySetResult(sessionTicket);
}
else
{
getAuthTicketTask.TrySetResult(null);
}
});
// Return Steam auth ticket.
string authTicket = await getAuthTicketTask.Task;
if (string.IsNullOrEmpty(authTicket))
{
resultCallback?.Invoke(Result<string>.CreateError(ErrorCode.UnknownError, "Failed to get Steam Auth Ticket"));
}
else
{
resultCallback?.Invoke(Result<string>.CreateOk(authTicket));
}
}
#endif -
OnLoginWithSteamButtonClicked()関数を以下の更新されたコードに置き換えます。このコードは Steam 認証チケットを取得し、それをプラットフォームトークンとして使用して AGS にログインします。ログイン試行後、ログインメニューは結果を処理し、プレイヤーをメインメニューにリダイレクトするか、エラーメッセージを表示します。Steam は WebGL ビルドではサポートされていないため、必ず#if !UNITY_WEBGLでラップしてください。#if !UNITY_WEBGL
private void OnLoginWithSteamButtonClicked()
{
LoginMenu_Starter loginMenu = MenuManager.Instance.GetCurrentMenu() as LoginMenu_Starter;
if (!loginMenu)
{
return;
}
loginMenu.OnRetryLoginClicked = OnLoginWithSteamButtonClicked;
loginMenu.WidgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Loading);
// Get Steam token to be used as platform token
GetSteamAuthTicket((Result<string> result) =>
{
if (result.IsError)
{
loginMenu.OnLoginCompleted(Result<TokenData, OAuthError>.CreateError(new OAuthError() { error = result.Error.Message }));
return;
}
// Log in to AccelByte with the Steam auth ticket
LoginWithOtherPlatform(result.Value, PlatformType.Steam, loginMenu.OnLoginCompleted);
});
}
#endif
リソース
-
このチュートリアルセクションで使用されるファイルは、Unity Byte Wars GitHub リポジトリで入手できます。