PlayFabとSteamworks使ってみたよー
今回はPlayFabとSteamworksを使ってみました!
PlayFabを使用したいのでまずはログイン機能を実装します。
ログインに使うのはSteamworksです。理由としてはSteamworksが自分的に一番楽だからです。ですが!ログイン機能実装の前にPlayFabからSteamアドオンを導入しなくてはなりません。やり方を説明いたします。
まずPlayFabの自分の管理画面のビルドからアドオンを選択してください。
次にSteamを選択!
最後にSteamアプリケーションIDとSteamWebAPIキーを入力してください!ここではやり方は省きます。申し訳ございません。
ここからUnityです!LoginSystemって名前のスクリプトを作成し、LoginというオブジェクトにSteamManagerと一緒に入れます。こんな感じです。
コードは下のやり方です。
using PlayFab;
using PlayFab.ClientModels;
using Steamworks;
using System;
using System.Text;
public class LoginSystem : MonoBehaviour
{
public GetPlayerCombinedInfoRequestParams info;
private void Awake()
{
SteamLogin();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void SteamLogin()
{
if (SteamManager.Initialized)
{
PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest
{
CreateAccount = true,
SteamTicket = GetSteamAuthTicket(),
InfoRequestParameters = info,
}, result =>
{
Debug.Log("ログイン成功!");
}
, error => { Debug.Log("ログイン失敗... " + error.GenerateErrorReport()); });
}
}
public string GetSteamAuthTicket()
{
byte[] ticketBlob = new byte[1024];
// Retrieve ticket; hTicket should be a field in the class so you can use it to cancel the ticket later
// When you pass an object, the object can be modified by the callee. This function modifies the byte array you've passed to it.
HAuthTicket hTicket = SteamUser.GetAuthSessionTicket(ticketBlob, ticketBlob.Length, out uint ticketSize);
// Resize the buffer to actual length
Array.Resize(ref ticketBlob, (int)ticketSize);
// Convert bytes to string
StringBuilder sb = new StringBuilder();
foreach (byte b in ticketBlob)
{
sb.AppendFormat("{0:x2}", b);
}
return sb.ToString();
}
}
2回目の投稿ということで今回はこのへんで!ありがとうございました!