본문 바로가기
프로그래밍/Unity

구글 Firebase 리얼타임 디비

by neive 2022. 7. 8.
728x90

 

https://firebase.google.com/docs?authuser=0&hl=ko 

 

문서  |  Firebase

Firebase SDK 참조, 통합 가이드, 샘플 코드, 라이브러리

firebase.google.com

 

https://firebase.google.com/docs/database/unity/start?authuser=0&hl=ko 

 

Unity용 Firebase 실시간 데이터베이스 시작하기  |  Firebase Documentation

의견 보내기 Unity용 Firebase 실시간 데이터베이스 시작하기 Firebase 실시간 데이터베이스는 NoSQL 클라우드 데이터베이스를 사용하여 데이터를 저장하고 동기화합니다. 모든 클라이언트에서 실시간

firebase.google.com

 

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using Firebase;
using Firebase.Database;
using UnityEngine.UI;

public class Test_DB : MonoBehaviour
{
    private DatabaseReference m_DB;

    [SerializeField]
    private Button m_Button_NewUser;

    [SerializeField] private Button m_Button_LevelUp;
    [SerializeField] private Button m_Button_LevelDown;
    [SerializeField] private Button m_Button_DeleteUser;
    
    private User m_User;
    
    private void Awake()
    {
        m_Button_NewUser.onClick.AddListener(OnNewUser);
        m_Button_LevelUp.onClick.AddListener(OnLevelUp);
        m_Button_LevelDown.onClick.AddListener(OnLevelDown);
        m_Button_DeleteUser.onClick.AddListener(OnDeleteUser);
    }

    // Start is called before the first frame update
    void Start()
    {
        m_DB = FirebaseDatabase.DefaultInstance.RootReference;

        // 계정 정보 로드
        m_DB.Child("users").Child("0").GetValueAsync().ContinueWith(task =>
        {
            if (task.IsCompleted)
            {
                if (task.Result.Value == null)
                    OnNewUser();    // 없으면 신규계정 생성
                else
                    m_User = JsonUtility.FromJson<User>(task.Result.GetRawJsonValue());
            }
        });
    }

    private void OnApplicationQuit()
    {
        m_DB.OnDisconnect();
    }

    // Update is called once per frame
    void Update()
    {

    }

    private void OnNewUser()
    {
        Write_NewUser("0", "네이브", 1);
    }

    private void OnDeleteUser()
    {
        m_DB.Child("users").Child("0").RemoveValueAsync();
    }
    
    private void OnLevelUp()
    {
        m_User.SetLevel(m_User.Level + 1);
        SetValue_Level("0", m_User.Level);
    }

    private void OnLevelDown()
    {
        m_User.SetLevel(m_User.Level - 1);
        SetValue_Level("0", m_User.Level);
    }
    
    void Write_NewUser(string userId, string nickname, int level)
    {
        var user = new User(nickname, level);
        var json = JsonUtility.ToJson(user);

        m_DB.Child("users").Child(userId).SetRawJsonValueAsync(json).ContinueWith(task =>
        {
            if (task.IsCompleted)
                m_User = new User(nickname, level);
        });
    }

    void SetValue_Level(string userId, int level)
    {
        m_DB.Child("users").Child(userId).Child("Level").SetValueAsync(level);
    }
}


public class User
{
    public string Nickname;
    public int Level;

    public User(string nickname, int level)
    {
        this.Nickname = nickname;
        this.Level = level;
    }

    public void SetLevel(int level)
    {
        Level = level;
    }
}

 

 

https://firebase.google.com/docs/crashlytics/get-started?authuser=2&platform=android 

 

Firebase Crashlytics 시작하기  |  Firebase Documentation

의견 보내기 Firebase Crashlytics 시작하기 iOS+ Android Flutter Unity 이 빠른 시작에서는 Firebase Crashlytics SDK를 사용해 앱에 Firebase Crashlytics를 설정하여 Firebase Console에서 포괄적인 비정상 종료 보고서를 확

firebase.google.com

 

728x90

'프로그래밍 > Unity' 카테고리의 다른 글

유니티 콜백 팝업 예제  (0) 2022.07.18
어드레서블 (Addressable)  (0) 2022.07.14
UGUI Advanced (Dynamic) ScrollView  (0) 2022.06.18
유니티쨩 URP 를 써보자  (0) 2022.03.21
Unity - Obfuscator 메뉴얼  (0) 2021.12.30

댓글