본문 바로가기
가이드/Unity, C#

유니티 파이어베이스 데이터베이스 저장/불러오기

by 루엔_vivid 2022. 3. 20.

파이어베이스 기본 설정은 아래 문서의 2번까지 하고 오시면 됩니다.

https://ruen346.tistory.com/93

 

유니티 파이어베이스 애널리틱스(Firebase Analytics) 로그 연동

1. 프로젝트 생성 먼저 파이어베이스를 사용할려면 해당 사이트에 구글 로그인을 한다. https://firebase.google.com/ Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되

ruen346.tistory.com

 

1. 데이터베이스 설정

프로젝트에 들어가서 빌드 -> Realtime Database 클릭

데이터베이스 만들기를 눌러줍니다

데이테베이스 위치를 설정해야 하는데 그렇게 중요한건 아니니 아무거나 선택하고

보안 규칙의 경우 변경이 가능하므로 여러 테스트를 위해 테스트 모드로 설정을 해줍니다

 

데이터베이스 추가로 인해 json이 변경이 되어 다시 다운받아야 한다

프로젝트 개요 우측 설정 버튼을 누르고 프로젝트 설정을 눌러준다

google-services.json 을 다운 받아 기존에 다운 받은 경로에 덮어준다

 

기존에 로그 구현할때는 Analytics를 사용하였는데

이번에는 그 아래에 있는 FirebaseDatabase.unitypackage를 더블클릭하여 임포트 해준다.

 

2. 코드 작성

이제 코드를 작성해 주어야 하는데 간단하게 저장과 로드를 할 수 있는 코드를 작성해보았다

using Firebase.Database;
using UnityEngine;
using UnityEngine.UI;

public class DatabaseManager : MonoBehaviour
{
    public InputField emailField;
    public InputField levelField;
    public InputField goldField;
    public Text text;
    
    public string email;
    public string level;
    public string gold;
    
    public class Data
    {
        public string level;
        public string gold;

        public Data(string level, string gold)
        {
            this.level = level;
            this.gold = gold;
        }
    }
    
    private DatabaseReference databaseReference;
    
    private void Start()
    {
        databaseReference = FirebaseDatabase.DefaultInstance.RootReference;
    }

    public void OnClickSaveButton()
    {
        email = emailField.text.Trim();
        level = levelField.text.Trim();
        gold = goldField.text.Trim();

        var data = new Data(level, gold);
        string jsonData = JsonUtility.ToJson(data);

        databaseReference.Child(email).SetRawJsonValueAsync(jsonData);
        
        text.text = "저장";
    }
    
    public void OnClickLoadButton()
    {
        email = emailField.text.Trim();

        databaseReference.Child(email).GetValueAsync().ContinueWith(task =>
        {
            if (task.IsCanceled)
            {
                text.text = "로드 취소";
            }
            else if (task.IsFaulted)
            {
                text.text = "로드 실패";
            }
            else
            {
                var dataSnapshot = task.Result;

                string dataString = "";
                foreach (var data in dataSnapshot.Children)
                {
                    dataString += data.Key + " " + data.Value + "\n";
                }

                text.text = dataString;
            }
        });
    }
}

이메일과 레벨, 골드를 입력할 수 있는 Field를 만들고 저장과 불러오기 버튼을 만들었다

정보 Text에는 불러오기 데이터를 출력을 시켜 주었다

 

테스트는 빌드를 하여야 정상적으로 가능하다

 

정상적으로 저장이 되는 것을 확인할 수 있다.

반응형

댓글