Unity プロジェクトでのサンプル シーンの使用
このトピックを活用して、GDK Unity パッケージで提供されている実績、クラウド セーブデータ、サインインのサンプル シーンを作成します。
GDK Unity パッケージのサンプル
サンプルは、C# コードとサンプル シーンとしてパッケージに組み込まれています。 これらは、[Build and Run] (ビルドして実行) メニューを使用して、機能の例 ([実績をアンロック] ボタンを選択して実績をアンロックするなど) を確認できます。 サンプル シーンの検査と読み込みを行うには、以下のスクリーンショットのように GDK-PC\Examples フォルダーに移動します。
サインイン サンプル シーン
サインイン サンプル シーンのスクリプトでは、Xbox サービスへのアクセス方法を説明しています。 C# コード例は含まれていませんが、プレハブを使用します。 シーンの GdkHelper プレハブが自動的に Xbox サービスにサインインします。 この設定は、以下のスクリーンショットのようにインスペクターで切り替えることができます。 SCID 値を設定する必要はありません。 この値は、ストアの関連付けウィザードを実行した後に取得されます。
サインイン サンプル シーンを構築して実行すると、サインイン状態を示す画面が以下のスクリーンショットのようにアプリに表示されます。
実績サンプル シーン
実績サンプルのスクリプトでは、実績をアンロックする方法を説明しています。 実績サンプル シーンを構築して実行すると、アプリに画面が表示されます。 この画面では、以下のスクリーンショットのように [実績をアンロック] を選択して、実績をアンロックすることができます。
次のコードは、実績サンプル シーンを設定します。
using Microsoft.Xbox;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UnlockAchievementSampleLogic : MonoBehaviour
{
public Text output;
public void UnlockAchievement()
{
XboxSdk.Helpers.UnlockAchievement("1");
output.text = "Unlocking achievement...";
}
}
クラウド セーブデータ サンプル シーン
このクラウド セーブデータ サンプルのスクリプトでは、Xbox ゲームセーブを使用してゲームの現在の状態を保存して読み込む方法を説明しています。 クラウド セーブデータ サンプル シーンを構築して実行すると、アプリに画面が表示されます。 この画面では、以下のスクリーンショットのように、現在のゲームの状態を保存して読み込むことができます。
次のコードは、クラウド セーブデータ サンプル シーンを設定します。
using Microsoft.Xbox;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;
using UnityEngine.UI;
public class GameSaveSampleLogic : MonoBehaviour
{
public Text output;
[Serializable]
private class PlayerSaveData
{
public string name;
public int level;
}
private PlayerSaveData playerSaveData;
private void Start()
{
playerSaveData = new PlayerSaveData();
playerSaveData.name = "Hayden Cook";
playerSaveData.level = 2;
}
// TODO: Have overloads that take files and objects.
public void Save()
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream saveFile = File.Create(Application.persistentDataPath + "gamesave.bin");
binaryFormatter.Serialize(saveFile, playerSaveData);
using (MemoryStream memoryStream = new MemoryStream())
{
binaryFormatter.Serialize(memoryStream, playerSaveData);
XboxSdk.Helpers.Save(memoryStream.ToArray());
output.text = "\n Saved game data:" +
"\n Name: " + playerSaveData.name +
"\n Level: " + playerSaveData.level;
}
}
public void Load()
{
XboxSdk.Helpers.OnGameSaveLoaded += OnGameSaveLoaded;
XboxSdk.Helpers.LoadSaveData();
}
private void OnGameSaveLoaded(object sender, byte[] saveData)
{
BinaryFormatter = new BinaryFormatter();
using (MemoryStream = new MemoryStream(saveData))
{
object playerSaveDataObj = binaryFormatter.Deserialize(memoryStream);
playerSaveData = playerSaveDataObj as PlayerSaveData;
output.text = "\n Loaded save game:" +
"\n Name: " + playerSaveData.name +
"\n Level: " + playerSaveData.level;
}
}
}