728x90
- 주제
>> Firebase 설정 및 Unity 연동
>> 게임 데이터 클래스 정의
>> Firestore에 데이터 저장
>> 저장 프로세스 연결
- 공부내용
이번 게시글에서는 Google 로그인 시스템을 통해 인증된 사용자 정보를 기반으로 Firebase의 Cloud Firestore에 게임 데이터를 저장하는 방법을 설명한다. 이를 통해 게임 데이터를 안전하게 클라우드에 보관하고, 언제든 불러올 수 있다.
1. Firebase 설정 및 Unity 연동
- Firebase 프로젝트 생성:
Firebase 콘솔에서 새 프로젝트를 생성한 후, Firestore 데이터베이스를 활성화한다. - Firebase SDK 추가:
Unity 프로젝트에 Firebase Unity SDK를 다운로드하여 추가한다. Firebase Authentication과 Firestore를 사용하므로 관련 패키지를 설치한다. - Firebase 초기화:
Firebase를 Unity에 초기화한다.
using Firebase;
using Firebase.Auth;
using Firebase.Firestore;
using UnityEngine;
public class FirebaseManager : MonoBehaviour
{
public static FirebaseManager Instance;
public FirebaseAuth Auth;
public FirebaseUser User;
public FirebaseFirestore Firestore;
private void Awake()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
{
if (task.Result == DependencyStatus.Available)
{
Auth = FirebaseAuth.DefaultInstance;
Firestore = FirebaseFirestore.DefaultInstance;
Debug.Log("Firebase 초기화 완료");
}
else
{
Debug.LogError("Firebase 초기화 실패: " + task.Result);
}
});
}
}
2. 게임 데이터 클래스 정의
게임 상태 데이터를 저장할 클래스를 정의한다. 기존의 데이터를 새로운 형식으로 변환해 사용한다.
[System.Serializable]
public class GameData
{
public string CurrentLevel;
public int StageNumber;
public int CollectedItems;
public int TotalScore;
public int Coins;
public bool IsCompleted;
public GameData(string currentLevel, int stageNumber, int collectedItems, int totalScore, int coins, bool isCompleted)
{
CurrentLevel = currentLevel;
StageNumber = stageNumber;
CollectedItems = collectedItems;
TotalScore = totalScore;
Coins = coins;
IsCompleted = isCompleted;
}
}
3. Firestore에 데이터 저장
public class DataManager : MonoBehaviour
{
public void SaveGameData(string userId, GameData data)
{
FirebaseManager.Instance.Firestore
.Collection("Users")
.Document(userId)
.SetAsync(data)
.ContinueWith(task =>
{
if (task.IsCompleted)
{
Debug.Log("게임 데이터 저장 완료");
}
else
{
Debug.LogError("게임 데이터 저장 실패: " + task.Exception);
}
});
}
}
4. 저장 프로세스 연결
게임 상태를 저장할 때 위 메서드를 호출한다.
public class GameController : MonoBehaviour
{
public void SaveGame()
{
string userId = FirebaseManager.Instance.User.UserId;
GameData data = new GameData("Forest", 5, 12, 3000, 150, false);
DataManager.Instance.SaveGameData(userId, data);
}
}
728x90
반응형
'유니티' 카테고리의 다른 글
Day 59 - 유니티 구글 계정 로그인 시스템 실행(2부) (1) | 2024.12.15 |
---|---|
Day 58 - 유니티 구글 계정 로그인 시스템 구축(1부) (0) | 2024.12.14 |
Day 57 - Unity와 구글 시트 연동 유지 관리 (0) | 2024.12.13 |
Day 56 - Unity와 구글 시트 데이터 동기화 전략 (4) | 2024.12.13 |
Day 55 - Unity에서 구글 시트 데이터 수정 및 업데이트 (2) | 2024.12.12 |