Unity 프로젝트에서 예제 장면 사용
이 주제를 사용하여 GDK Unity 패키지를 사용하여 업적, 클라우드 저장 및 로그인에 대한 예제 장면을 만듭니다.
GDK Unity 패키지의 예제
예제는 패키지에 코드 및 샘플 C# 장면으로 기본으로 제공됩니다. 빌드 및 실행 메뉴를 사용하여 기능 예제(예: 도전 과제 잠금 해제 버튼을 선택하여 도전 과제 잠금 해제)를 검토하기 위해 빌드되었습니다. 샘플 장면을 검사하고 로드하기 위해 다음 스크린샷에 표시된 GDK-PC\예제 폴더로 이동합니다.
로그인 예제 장면
로그인 예제 스크립트는 Xbox 서비스에 액세스하는 방법을 설명합니다. 여기에는 C # 코드 예제가 포함되어 있지 않지만 prefab을 사용합니다. 장면의 GdkHelper 프리팹은 Xbox 서비스에 자동으로 로그인합니다. 다음 스크린샷에 표시된 것처럼 검사에서 이 설정을 전환할 수 있습니다. SCID 값을 설정할 필요가 없습니다. Store 연결 마법사를 실행하면 해당 값을 얻게 됩니다.
로그인 예제 장면을 빌드하고 실행하면 다음 스크린샷과 같이 로그인 상태를 나타내는 화면이 앱에 나타납니다.
도전 과제 예제 장면
도전 과제 예제 스크립트에서는 도전 과제를 잠금 해제하는 방법을 설명합니다. 도전 과제 예제를 구축하고 실행하면 앱에 화면이 나타납니다. 이 화면에서 다음 스크린샷과 같이 도전 과제 잠금 해제를 선택하여 도전 과제를 잠금 해제할 수 있습니다.
다음 코드는 도전 과제 예제 장면을 설정합니다.
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 Game Save를 사용하여 현재 게임 상태를 저장하고 로드하는 방법을 설명하는 예제 스크립트를 저장합니다. 클라우드를 구축하고 실행하면 예제 장면이 저장됩니다. 앱에 화면이 나타납니다. 이 화면에서 다음 스크린샷과 같이 페이지의 현재 상태를 저장하고 로드할 수 있습니다.
다음 코드는 클라우드가 예제를 저장하는 경우를 설정합니다.
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;
}
}
}