12 . 압축 해제한 폴더에서 FirebaseDatabase.unitypackage 를 가져온뒤 import 한다.
13. Unity로 돌아와서 [ Enable ] 클릭 (오류는 IOS 앱 등록을 안 해서 발생하는데 전혀 상관 X)
[ 데이터 저장 ]
1. 우선 [ 빌드 ] - [ Realtime Database ] - [ 데이터베이스 만들기 ] 를 통해 Realtime Database를 만든다.
2. 데이터베이스의 위치를 선택한다.
3. 테이터베이스 보안 규칙을 작성한 뒤 [ 사용 설정 ] 클릭
4. 데이터 저장 Test를 위해 Unity로 돌아와 [ Hierarcy ] - [ 오른쪽 마우스 ] - [ Create Empty ] 를 통해 빈 오브젝트 생성 후
다음과 같은 Script를 Component로 추가한다.
데이터 저장 Test를 위한 FirebaseTest Script 생성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase;
using Firebase.Database;
public class FirebaseTest : MonoBehaviour
{
DatabaseReference dbReference;
void Start()
{
dbReference = FirebaseDatabase.DefaultInstance.RootReference;
dbReference.Child("users").Child("username").SetValueAsync("YS");
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase;
using Firebase.Database;
public class Test : MonoBehaviour
{
DatabaseReference dbReference;
void Start()
{
dbReference = FirebaseDatabase.DefaultInstance.RootReference;
AddNewUser("1", "YS", "1234@naver.com");
}
void AddNewUser(string userId, string name, string email)
{
User user = new User(name, email);
string json = JsonUtility.ToJson(user); // 형식이 지정된 C# 객체를 사용시 객체를 원시 JSON으로 변환
dbReference.Child("users").Child(userId).SetRawJsonValueAsync(json); // 지정된 위치에서 하위 노드를 포함하여 모든 데이터를 덮어쓴다.
dbReference.Child("users").Child(userId).Child("username").SetValueAsync("JY"); // 전체 객체를 다시 쓰지 않고 하위 항목을 업데이트 하는 방법
}
}
[ 데이터 불러오기 ]
1. 현재 Realtime Database에 아래와 같은 데이터들이 있다.
2. 데이터를 불러오기 위해 Script를 다음과 같이 수정한다.
데이터를 불러오기 위한 FirebaseTest Script 수정
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase;
using Firebase.Database;
public class Test : MonoBehaviour
{
DatabaseReference dbReference;
void Start()
{
dbReference = FirebaseDatabase.DefaultInstance.RootReference;
LoadUserInfo();
}
void LoadUserInfo()
{
dbReference.Child("users").GetValueAsync().ContinueWith(task =>
{
if (task.IsCanceled)
Debug.Log("로드 취소");
else if (task.IsFaulted)
Debug.Log("로드 실패");
else
{
var dataSnapshot = task.Result;
foreach (var data in dataSnapshot.Children)
foreach (var child in data.Children)
Debug.Log(data.Key + " : " + child.Key + " : " + child.Value);
}
});
}
}