반응형
Firebase Database 데이터 사용
저번 글에서 Firebase Database를 연동했으니 이제 Database에 존재하는 데이터를 사용해보도록 하겠습니다.
1. 데이터 입력
지난 글에서 입력했던 데이터베이스를 토대로 시작하겠습니다.
이 데이터베이스에서 추가로 "나일등"의 점수와 시간을 입력하도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase;
using Firebase.Database;
using Firebase.Unity.Editor;
// Firebase 불러오기
public class GameManager : MonoBehaviour{
class Rank{
// 순위 정보를 담는 Rank 클래스
// Firebase와 동일하게 name, score, timestamp를 가지게 해야함
public string name;
public int score;
public int timestamp;
// JSON 형태로 바꿀 때, 프로퍼티는 지원이 안됨. 프로퍼티로 X
public Rank(string name, int score, int timestamp){
// 초기화하기 쉽게 생성자 사용
this.name = name;
this.score = score;
this.timestamp = timestamp;
}
}
public DatabaseReference reference { get; set; }
// 라이브러리를 통해 불러온 FirebaseDatabase 관련객체를 선언해서 사용
void Start(){
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://inyongsgameserver.firebaseio.com/");
reference = FirebaseDatabase.DefaultInstance.RootReference;
// 데이터베이스 경로를 설정해 인스턴스를 초기화
// Database의 특정지점을 가리킬 수 있는데, 그 중 RootReference를 가리킴
Rank rank = new Rank("나일등", 100, 1574940551);
string json = JsonUtility.ToJson(rank);
// 데이터를 json형태로 반환
string key = reference.Child("rank").Push().Key;
// firebase에 key값은 0 신인용, 1 황제리, 2 김젤리.
// root의 자식 rank에 key 값을 추가해주는 것임
reference.Child("rank").Child(key).SetRawJsonValueAsync(json);
// 생성된 키의 자식으로 json데이터를 삽입
}
}
|
cs |
다음과 같이 새로운 key 값(기괴한 값이지만...)에 제가 입력한 정보들이 추가되었습니다.
2. 데이터 불러오기
Firebase에 정보를 입력하는 것을 했으니 이제 불러오는 것을 해보겠습니다.
데이터베이스에 rank의 모든 사용자의 name과 score를 출력하도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase;
using Firebase.Database;
using Firebase.Unity.Editor;
// Firebase 불러오기
public class GameManager : MonoBehaviour{
class Rank{
// 순위 정보를 담는 Rank 클래스
// Firebase와 동일하게 name, score, timestamp를 가지게 해야함
public string name;
public int score;
public int timestamp;
// JSON 형태로 바꿀 때, 프로퍼티는 지원이 안됨. 프로퍼티로 X
public Rank(string name, int score, int timestamp){
// 초기화하기 쉽게 생성자 사용
this.name = name;
this.score = score;
this.timestamp = timestamp;
}
}
public DatabaseReference reference { get; set; }
// 라이브러리를 통해 불러온 FirebaseDatabase 관련객체를 선언해서 사용
void Start(){
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://inyongsgameserver.firebaseio.com/");
// 데이터베이스 경로를 설정해 인스턴스를 초기화
reference = FirebaseDatabase.DefaultInstance.GetReference("rank");
// 사용하고자 하는 데이터를 reference가 가리킴
// 여기선 rank 데이터 셋에 접근
reference.GetValueAsync().ContinueWith(task => {
if (task.IsCompleted){ // 성공적으로 데이터를 가져왔으면
DataSnapshot snapshot = task.Result;
// 데이터를 출력하고자 할때는 Snapshot 객체 사용함
foreach(DataSnapshot data in snapshot.Children){
IDictionary rank = (IDictionary)data.Value;
Debug.Log("이름: " + rank["name"] + ", 점수: " + rank["score"]);
// JSON은 사전 형태이기 때문에 딕셔너리 형으로 변환
}
}
});
}
}
|
cs |
정상적으로 rank에 속해있던 사용자들의 이름과 점수가 출력되는 것을 확인할 수 있습니다.
이로써 데이터베이스의 데이터를 추가하고, 불러오는 방법을 알게 되었습니다.
반응형
'게임 > Unity' 카테고리의 다른 글
[Unity 2D] 조이스틱을 이용한 부드러운 캐릭터 이동 (4) | 2020.02.13 |
---|---|
[Unity 이론] Firebase Auth 회원가입 및 로그인 (0) | 2019.12.08 |
[Unity 이론] Firebase Database 연동 (0) | 2019.11.28 |
[Unity 이론] Firebase Database (0) | 2019.11.28 |
[Unity 이론] Object Pooling (0) | 2019.11.26 |
댓글