파이어베이스의 Realtime Database를 연동해서 Load / Save 테스트를 완료했다. 우선 연동된 것 확인까지만 하고, 이번주는 중간 발표를 준비하기로 했다.
파이어베이스 Realtime Database 연동
아래 두 링크를 참고했다.
1. 파이어베이스에서 프로젝트 생성하고, SDK를 유니티 프로젝트에 임포트하는 과정까지는 아래 블로그를 참고했다.
https://learn-and-give.tistory.com/118
[백문이 불여일타] Unity용 Firebase 실시간 데이터베이스 시작하기
NodeJS 기반으로 이것 저것 해보려고 알아보던 중, Unity 기반으로 멀티플레이로 뭔가 검토 해 볼 것이 있어 Firebase 기반의 Unity 연동에 대해 알아보고자 합니다. 일단은 Firebase에서 제공되는 튜토리
learn-and-give.tistory.com
2. 이후 실질적으로 사용할 때는 아래 외국형님 링크를 참고해서 만들었다!
https://www.youtube.com/watch?v=hAa5exkTsKI
따라하면서 조금 신경써줘야 됐던 부분들
- google-services.json 을 새로 바꾸기
파이어베이스 프로젝트 잘 만들고 나면 google-services.json 파일에 firebase_url이 추가된다. 다운받아서 원래 있던 파일을 대체해도 되고 firebase_url만 복붙해도 된다.
- google-services.json 파일이 Assets/StreamingAssets 에 있어야 함.
Realtime Database에서 Load / Save
LoadFirebase에서는 데이터 로드가 된 후에 실행할 수 있는 Action을 제공한다. 로드된 시점(?)을 제공하는 것이다.
/// <summary>
/// 파이어베이스에 저장 (쓰기)
/// </summary>
/// <typeparam name="T">저장할 데이터 타입</typeparam>
/// <param name="data">저장할 데이터</param>
public void SaveFirebase<T>(T data)
{
string json = JsonConvert.SerializeObject(data);
_databaseReference.Child("users").Child(userID).Child(typeof(T).Name).SetRawJsonValueAsync(json);
}
/// <summary>
/// 파이어베이스에서 로드 (읽기)
/// </summary>
/// <typeparam name="T">읽어올 데이터 타입</typeparam>
/// <param name="onComplete">로드완료 후 실행할 Action</param>
public void LoadFirebase<T>(Action<T> onComplete)
{
Managers.StartCoroutine(WaitingData<T>(result =>
{
onComplete(result);
}));
}
private IEnumerator WaitingData<T>(Action<T> onComplete)
{
var firebaseData = _databaseReference.Child("users").Child(userID).Child(typeof(T).Name).GetValueAsync();
yield return new WaitUntil(() => firebaseData.IsCompleted);
Util.Log("Process is Complete");
DataSnapshot snapshot = firebaseData.Result;
string jsonData = snapshot.GetRawJsonValue();
if(jsonData != null)
{
T result = JsonConvert.DeserializeObject<T>(jsonData);
onComplete.Invoke(result);
Util.Log("Firebase's Data 잘 불러옴");
}
else
{
Util.Log("Firebase's Data Not Found");
}
}
사용 방법을 팀 노션에 문서로 정리해두었다.
'프로젝트 일지 > Unity' 카테고리의 다른 글
[Unity/TIL] '오집마' 프로젝트 개발 일지 - 그리드 배치 시스템 (8) | 2025.05.01 |
---|---|
[Unity/TIL] '오집마' 프로젝트에서의 오브젝트 풀링 (Object Pooling) (3) | 2025.04.30 |
[Unity/TIL] 최종 프로젝트 개발 일지 - 버그 수정, UX 개선, 남은 기능 구현 (10) | 2025.04.28 |
[Unity/TIL] 최종 프로젝트 개발 일지 - 중복되는 코드 구조 변경 (1) | 2025.04.25 |
[Unity/TIL] 2D 게임에서 특정 오브젝트 바라보도록 회전시키기 (7) | 2025.04.23 |