Unity MongoDB 통신
오브젝트 데이터 송수신을 위한 MongoDB 연결을 공부함
Unity Version : 2022.3.16f1 LTS
MongoDB 사용 설정
MongoDB를 유니티에서 사용하기 위해 MongoDB Driver가 필요
드라이버는 NuGet 패키지인데 이걸 유니티에서 바로 사용할 수가 없음
그래서 NuGetForUnity를 설치해야함
NuGetForUnity 설치
- Window → Package Manager → Add package from git URL…
- https://github.com/GlitchEnzo/NuGetForUnity?path=/src/NuGetForUnity 입력
성공하면 아래와 같이 툴바에 NuGet 드롭다운 버튼이 생김
MongoDB Driver 설치
- NuGet → Manage NuGet Packages
- 검색창에 MongoDB 검색 → MongoDB.Driver 설치
스크립트 작성 준비 끝!
Mongo DB 연결 스크립트 작성
연결이 되는지부터 테스트
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
// DBTest.cs
using MongoDB.Bson;
using MongoDB.Driver; // 이거 해줘야됨
public class DBTest : MonoBehaviour
{
// Connection String이 staatic이 아니면 아래 초기화에서 오류남
private static string connectionString = "mongodb://localhost:27017";
private string databaseName = "user_db";
private string collectionName = "user";
MongoClient client = new MongoClient(connectionString);
IMongoDatabase database;
IMongoCollection<BsonDocument> collection;
private void Awake()
{
}
// Start is called before the first frame update
void Start()
{
database = client.GetDatabase(databaseName);
collection = database.GetCollection<BsonDocument>(collectionName);
// 테스트 데이터
var document = new BsonDocument { { "id", "admin" }, { "email", "admin@test.com" }, { "pw", "admin" } };
collection.InsertOne(document);
}
// Update is called once per frame
void Update()
{
}
}
싱글톤 타입으로 DBManager 작성
DB에 접근하려는 시도는 앞으로도 많이 있을 것 같아서
전체 게임에서 제어할 수 있도록 싱글톤 타입의 DBManager를 생성함
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
53
// DBManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MongoDB.Bson;
using MongoDB.Driver;
public class DBManager : MonoBehaviour
{
private static string connectionString = "mongodb://localhost:27017";
private string assetDatabaseName = "asset_db";
private string assetCollectionName = "assets";
protected MongoClient client = new MongoClient(connectionString);
protected IMongoDatabase assetDatabase;
protected IMongoCollection<BsonDocument> assetCollection;
public static DBManager instance;
private void Awake()
{
if (DBManager.instance == null)
{
DBManager.instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
// Start is called before the first frame update
void Start()
{
try
{
assetDatabase = client.GetDatabase(assetDatabaseName);
assetCollection = assetDatabase.GetCollection<BsonDocument>(assetCollectionName);
}
catch
{
Debug.Log("DB Connection Failed");
}
}
// Update is called once per frame
void Update()
{
}
}
참고자료
Quick Start for Unity - .NET SDK
GitHub - GlitchEnzo/NuGetForUnity: A NuGet Package Manager for Unity
This post is licensed under CC BY 4.0 by the author.