david's daily developer note

[Unity] EasySave Primitive Type Save/Load Function Example 본문

[Develop] Unity

[Unity] EasySave Primitive Type Save/Load Function Example

mouse-david 2022. 6. 21. 00:53
728x90

유니티 개발하면서, 로컬 DB를 사용하는데, 가장 유명한 에셋이다.
꽤 많은 개발자들이 사용하고 있고, 커뮤니티도 활발하다. 저장 관련된 코드를 OS에 따라서 구현하는것은 그냥 시작도 하지말고 EasySave를 사용하자.
https://assetstore.unity.com/packages/tools/utilities/easy-save-the-complete-save-data-serialization-system-768?aid=1101l7zGS&utm_campaign=unity_affiliate&utm_medium=affiliate&utm_source=partnerize-linkmaker

 

Easy Save - The Complete Save Data & Serialization System | 유틸리티 도구 | Unity Asset Store

Use the Easy Save - The Complete Save Data & Serialization System from Moodkie on your next project. Find this utility tool & more on the Unity Asset Store.

assetstore.unity.com

이 글에서는 EasySave를 활용하여 Primitive Type을 저장하고 읽는 예제 코드를 설명한다.
나는 주로 static 함수를 모아둔 클래스에서 일괄적으로 DB처리를 하는것을 선호한다.

다음은 primitive 자료형의 읽기/쓰기의 기본 예제이다.

static private int ReadInt(string key, int defaultValue)
{
    if (!ES3.KeyExists(key))
    {
        ES3.Save<int>(key, defaultValue);
        return defaultValue;
    }
    return ES3.Load<int>(key, defaultValue);
}
    
static private void WriteInt(string key, int newValue)
{
    int val = ReadInt(key, newValue);
    if (val != newValue)
    {
        ES3.Save<int>(key, newValue);
    }
}

읽기/쓰기에 사용되는 함수들은 기본적으로 Key, Value 쌍의 값을 인자로 사용한다.

ReadInt 함수에서는 읽을 Key와 기본값을 인자로 받는다.
Key가 존재하는지 판단하고 없다면 DB 쓰기를 한적이 없는 것이므로 기본값으로 한번 저장하고 기본값을 반환한다.
Key가 이미 존재하는 경우에는 Key의 값을 반환한다.

WriteInt 함수에서는 ReadInt를 수행하고 같은 값이면 쓰기를 수행하지 않도록 예외처리하였다. 
다른값이라면 쓰기를 시도한다.

다른 자료형 float, bool, list<type>의 형태도 구조는 동일하다.

추가적으로 개발중에 DB를 초기화하고 싶다면, Key값을 삭제하여 기본값으로 초기화 되도록 할 수 있다.

ES3.DeleteKey(KEY);
728x90