오보에블로그
[Unity] Unity와 sqlite 연동하기 본문
728x90
1. 참고 블로그
- 멍토님께서 작성하신 포스트 가 정말 잘 설명되어 있어 해당 포스트를 참고해서 해결하였고, 기록을 위해 작성한다.
2. Sqlite 다운받기
- 다운로드 링크 접속해서 자신에게 맞는 버전을 다운로드한다.
3. 플러그인 파일 등록
- 2 에서 다운로드 받은 파일을 압축해제하면
sqlite3.def
,sqlite3.dll
파일을 유니티 프로젝트의Assets/Plugins/
에 올린다.( 없다면 폴더 생성) - 자신의 로컬 경로에서
Mono.Data.Sqlite.dll
도Assets/Plugins/
에 올린다. 필자는C:\Program Files\Unity\Hub\Editor\2020.3.19f1\Editor\Data\MonoBleedingEdge\lib\mono\4.5
이었음. - 안드로이도에서 사용하기위한 추가 파일도
Assets/Plugins/Android
에 올린다. (아래 첨부한 zip 파일 참고)
4. DB 생성
- https://sqlitebrowser.org/dl/ 에서 DB Browser 를 다운받는다.
- 새 데이터 베이스 생성
- NN : NotNull
- PK : Primary key
- AI: Autoincrement
- U : Unique
- 데이터 보기 > 새 레코드 를 통해 튜플 생성
- 새 데이터 베이스 생성
- 만든 파일을
Assets/StreamingAssets
에 복사
5. 유니티 스크립트 작성
// DB 위치 이동
void DBCreate()
{
string filepath = string.Empty;
if (Application.platform == RuntimePlatform.Android)
{
filepath = Application.persistentDataPath + "/[filename].db";
if (!File.Exists(filepath))
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get("jar:file://" + Application.dataPath + "!/assets/[filename].db");
unityWebRequest.downloadedBytes.ToString();
while (!unityWebRequest.SendWebRequest().isDone) { }
File.WriteAllBytes(filepath, unityWebRequest.downloadHandler.data);
}
}
else
{
filepath = Application.dataPath + "/DiceInfo.db";
if(!File.Exists(filepath))
{
Debug.Log($"{File.Exists(filepath)}");
File.Copy(Application.streamingAssetsPath + "/[filename].db", filepath);
}
Debug.Log($"{File.Exists(filepath)}");
}
}
// DB file path 불러오기
public string GetDBFilePath()
{
string str = string.Empty;
if(Application.platform == RuntimePlatform.Android)
{
str = "URI=file:" + Application.persistentDataPath + "/[filename].db";
}
else
{
str = "URI=file:" + Application.dataPath + "/[filename].db";
}
return str;
}
// DB 읽어오기
public void DataBaseRead(string query)
{
IDbConnection dbConnection = new SqliteConnection(GetDBFilePath());
dbConnection.Open();
IDbCommand dbCommand = dbConnection.CreateCommand();
dbCommand.CommandText = query;
IDataReader dataReader = dbCommand.ExecuteReader();
while (dataReader.Read())
{
생성한 데이터 베이스 형식에 맞게 출력
Debug.Log($"{dataReader.GetString(0)}");
}
dataReader.Dispose();
dataReader = null;
dbCommand.Dispose();
dbCommand = null;
dbConnection.Close();
dbConnection = null;
}
728x90
'GameEngine & CG > Unity' 카테고리의 다른 글
[Unity] WebGL Build 및 Publish 설정 (0) | 2022.02.12 |
---|---|
[Unity] 스크립트에서 버튼 눌리는 효과 주기 (0) | 2022.02.02 |
[Unity] 쉐이더 내 텍스처 변경 (0) | 2021.12.12 |
[Unity] 스크립트에서 게임오브젝트 쉐이더 불러오기 (0) | 2021.12.10 |
[Unity] Unity Metarial Value Chart (0) | 2021.12.02 |