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<string, object> Dic_CustomData = new Dictionary<string, object>(); 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 |