이런 스킬시스템을 저장하는 방법
강의 모두 잘들었습니다.
공부한 내용을 바탕으로 스킬시스템을 넣은 게임을 만드려고 합니다. 추가로 파이어베이스의 리얼타임 데이터베이스까지 사용해서 세이브/로드 기능도 구현하려고 하는데, 이때 Json으로 저장하는 부분에서 어려움을 느끼고 있습니다.
우선 제가 알고있는 수준은
string json = JsonUtility.ToJson(player); 같이 ToJson으로 변환해서 저장하는 정도입니다. 다만 이 방법으로는 int,string,float 같은 기본 자료형만 저장이 가능한데, 이때 Entity가 들고있는 저장해야하는 데이터들. 여기서는 SkillSystem과 Stats도 저장에 포함되어야겠죠 스탯과 스킬이니깐. 이런 것들은 어떤식으로 저장을 구현하는지 마땅히 떠오르지 않습니다..
멀티 게임은 아니고 싱글게임에 서버만 입혀주는 정도기 때문에 Player(강의의 Entity)의 다양한 데이터를 저장하는 방법을 알아야 하는데, 이 강의에서 나오는 현재 플레이어가 보유한 스탯,스킬의 정보는 어떤식으로 저장을 해야하나요? 최대한 쉽게.. 알려주시면 정말 너무 감사하겠습니다 ㅠㅠ 어려워요..
답변 1
0
수강해주셔서 감사합니다.
Entity를 통채로 저장하고 싶다면 JsonUtility가 아닌 NewtonJson으로 Entity에 대한 JsonConverter를 직접 작성해주시는게 편하구요, 좀 더 쉽게는 IdentifiedObject가 자신의 정보를 담은 JObject를 만들어서 return해주고(Save), 나중에 그 JObject를 다시 받아서 Load해주시면 됩니다.
가장 쉽게는 아예 Save용 struct를 따로 만드는 것입니다.
예시 Code는 아래와 같습니다.
Stat.cs
[System.Serializable]
public struct StatSaveData
{
public int id;
public int defaultValue;
}
public StatSaveData ToSaveData()
=> new StatSaveData { id = ID, defaultValue = defaultValue };
public void FromSaveData(StatSaveData saveData)
=> defaultValue = saveData.defaultValue;
Entity.cs
[System.Serializable]
public struct EntitySaveData
{
public StatSaveData[] statSaveDatas;
// 그 외 다른 SaveData들
}
public string ToSaveData()
{
var saveData = new EntitySaveData();
saveData .statSaveDatas = Stats.All.Select(x => x.ToSaveData()).ToArray();
// 나머지도 Save
return JsonUtility.ToJson(saveData);
}
public void void FromSaveData(string json)
{
var saveData = JsonUtility.FromJson<EntitySaveData>(json);
foreach (var statSaveData in saveData.statSaveDatas)
stats.GetStat(statSaveData.id).FromSaveData(statSaveData);
// 나머지 작업들
}
이럼 이제 다음과 같이 Database에 Save하고 Load 할 수 있습니다.
Save
var saveData = entity.ToSaveData();
mDatabaseRef.Child("users").Child(userId).SetRawJsonValueAsync(saveData);
Load
// Firebase Load
entity.FromSaveData(loadedJson);
감사합니다.
0
와 진짜 너무 감사합니다.. 일단 제시해주신 가장 쉬운 방법으로 구현부터 해보고 천천히 업그레이드 해보겠습니다.
수업 외의 내용인데도 예시 코드까지 너무 상세하게 알려주셔서 감사합니다.
Indicator와 SelectionAction 및 SearchAction 간의 관계에 대해 질문있습니다.
0
70
2
ChargingState에서 질문이 있습니다.
0
49
1
Effect.GetData 함수 질문있습니다.
0
45
2
CanTransitionToSelf 질문 있습니다.
0
53
2
Stat의 MaxValue에 관하여 질문이 있습니다.
0
42
1
Stat vs StatScaleFloat
0
75
4
애니매이션 버그가 있는것 같습니다.
0
65
2
StatsOverride질문이 있습니다.
0
50
2
SetBonusValue함수 질문있습니다.
0
46
2
오늘 수강시작한 취준생입니다.
0
49
1
사소하지만 에디터 관련 질문있습니다
0
69
1
스킬시스템을 데이터 테이블화 하는 법에 대해 감이안잡혀서 질문드립니다.
0
146
2
TargetSearcher에 대해서 질문이 있습니다
0
52
1
돌진해서 몸박을하면 피격자를 날리면서 데미지를 입히는 스킬은 이 시스템에서 어떻게 만들 수 있을까요??
0
116
2
스킬 관련 질문입니다
0
110
2
통일된 Stat을 사용하지 않고 모듈화 방식으로 Stats를 만드신 이유가 궁금합니다.
0
152
1
Effect에 기능 확장에 대해서 질문이 있습니다.
0
149
2
SkillData 구조체 질문
0
122
1
스킬트리 저장 질문입니다
0
135
2
BT와 FSM을 활용해 몬스터 AI 구현
0
350
2
MonoStateMachine을 만든 이유가 잘 이해가 가지 않습니다.
0
128
1
근접 콤보 공격을 만들고 싶습니다.
0
153
1
하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.
0
190
1
올해에 예정된 새로운 강의가 있으신지요?
0
115
2





