Programming/Unity

Template을 이용한 Data 저장 Component 만들기(소스코드)

사기꾼프로드 2017. 9. 23. 18:15

임의의 데이터를 저장하고 불러와야 할 경우에 오브젝트 내에 컴포넌트로 넣어줍니다.


템플릿으로 만들었기 때문에 다양한 타입들의 변수를 넣을 수 있으며, 사용자가 입력한 KeyName 과 템플릿의 타입을


조합한 것을 Dictionary 에서 Key로 가지고 있기 때문에 잘못된 키이름이나 잘못된 타입으로 가져올 경우 


default(T)를 반환하게 하였습니다.


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
using UnityEngine;
using System.Collections.Generic;
using System.Text;
 
public class CustomDataConatiner : MonoBehaviour
{
    Dictionary<stringobject> Dic_CustomData = new Dictionary<stringobject>();
 
    public void SetValue<T>(string _KeyName, T _Value)
    {
        StringBuilder builder = new StringBuilder();
        builder.Append(_Value.GetType());
        builder.Append('_');
        builder.Append(_KeyName);
        Dic_CustomData.Add(builder.ToString(), _Value);
    }
 
    public T GetValue<T>(string _KeyName)
    {
        T ReturnValue = default(T);
        StringBuilder builder = new StringBuilder();
        builder.Append(ReturnValue.GetType());
        builder.Append('_');
        builder.Append(_KeyName);
 
        string _Key = builder.ToString();
 
        if (Dic_CustomData.ContainsKey(_Key))
        {
            object objValue = Dic_CustomData[_Key];
            return (T)objValue;
        }
#if UNITY_EDITOR
        Debug.Log("None value");
#endif
        return ReturnValue;
    }
 
    void OnDestroy()
    {
        Dic_CustomData.Clear();
    }
}
 
cs