Class DataManager
LoadSceneData :: 씬 데이터 호출
public void LoadSceneData(Define.Scene _scene)
{
ClearSceneData();
Managers.Resource.Load<TextAsset>(_scene.ToString(),(sceneDataJson) =>
{
SceneData sceneData = JsonUtility.FromJson<SceneData>(sceneDataJson.text);
foreach (var dialog in sceneData.dialogDatas)
{
sceneDialogData.TryAdd(dialog.dialogUID, dialog);
}
});
}
매개변수로 받은 Scene enum값을 스트링값으로 변환
변환한 값으로 Managers.Resource.Load()
실행
콜백받은 SceneDataJson을 SceneData 클래스로 변환
SceneData 클래스에 있는 데이터들을 딕셔너리에 추가
PreDataLoad :: 기본 데이터 호출
public void PreDataLoad()
{
if (isPreload)
return;
isPreload = true;
Managers.Resource.Load<TextAsset>("Preload", (preDataJson) =>
{
PreData preData = JsonUtility.FromJson<PreData>(preDataJson.text);
foreach (var item in preData.itemDatas)
{
itemDataDictionary.TryAdd(item.itemUID, item);
}
});
}
이미 로드 되어 있다면 리턴
아니라면 Managers.Resource.Load()
실행
콜백받은 PreDataJson을 PreData 클래스로 변환
PreData 클래스에 있는 데이터들을 딕셔너리에 추가
ClearSceneData :: 씬이 바뀔 때 초기화 용도
public void ClearSceneData()
{
sceneDialogData.Clear();
}
Get :: 데이터 반환 용도
public void GetItem(int _itemUID, Action<ItemData> _callback)
{
if (itemDataDictionary.TryGetValue(_itemUID, out ItemData itemData))
_callback?.Invoke(itemData);
}
public void GetDialog(int _dialogUID, Action<DialogData> _callback)
{
if (sceneDialogData.TryGetValue(_dialogUID, out DialogData dialogData))
_callback?.Invoke(dialogData);
}