次の方法で共有


Unity プロジェクトでのサンプル シーンの使用

このトピックを活用して、GDK Unity パッケージで提供されている実績、クラウド セーブデータ、サインインのサンプル シーンを作成します。

GDK Unity パッケージのサンプル

サンプルは、C# コードとサンプル シーンとしてパッケージに組み込まれています。 これらは、[Build and Run] (ビルドして実行) メニューを使用して、機能の例 ([実績をアンロック] ボタンを選択して実績をアンロックするなど) を確認できます。 サンプル シーンの検査と読み込みを行うには、以下のスクリーンショットのように GDK-PC\Examples フォルダーに移動します。

GDK Unity パッケージ メニューでのサンプル シーンのスクリーンショット

サインイン サンプル シーン

サインイン サンプル シーンのスクリプトでは、Xbox サービスへのアクセス方法を説明しています。 C# コード例は含まれていませんが、プレハブを使用します。 シーンの GdkHelper プレハブが自動的に Xbox サービスにサインインします。 この設定は、以下のスクリーンショットのようにインスペクターで切り替えることができます。 SCID 値を設定する必要はありません。 この値は、ストアの関連付けウィザードを実行した後に取得されます。

GdkHelper プレハブのサインイン設定のスクリーンショット

サインイン サンプル シーンを構築して実行すると、サインイン状態を示す画面が以下のスクリーンショットのようにアプリに表示されます。

GDK Unity パッケージを使用したサインイン サンプル シーンのスクリーンショット

実績サンプル シーン

実績サンプルのスクリプトでは、実績をアンロックする方法を説明しています。 実績サンプル シーンを構築して実行すると、アプリに画面が表示されます。 この画面では、以下のスクリーンショットのように [実績をアンロック] を選択して、実績をアンロックすることができます。

GDK Unity パッケージでの実績サンプル シーンのスクリーンショット

次のコードは、実績サンプル シーンを設定します。

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 ゲームセーブを使用してゲームの現在の状態を保存して読み込む方法を説明しています。 クラウド セーブデータ サンプル シーンを構築して実行すると、アプリに画面が表示されます。 この画面では、以下のスクリーンショットのように、現在のゲームの状態を保存して読み込むことができます。

GDK Unity パッケージでのクラウド セーブデータ サンプル シーンのスクリーンショット

次のコードは、クラウド セーブデータ サンプル シーンを設定します。

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;
        }
    }
}

関連項目

PC 開発用に Unity で始める