1인 개발/나홀로 성 지키기

나홀로 성 지키기 개인 프로젝트 14일차

잼잼재미 2024. 4. 5. 15:57

트러블 슈팅


1. Json 데이터 저장


[System.Serializable]
public class SkillData
{
    [Header("Common Stats")]
    public string Tag;
    public string Description;
    public int Level;
    public Sprite Icon;
    public GameObject SkillPrefab;
}

 

기존 SkillSO의 데이터를 Json으로 데이터 저장을 위해 class로 만들었다. 

 

 

 

하지만 각각 드래그 드롭으로 연결했던 데이터가 몇 번의 데이터 저장, 불러오기를 진행하면 위 처럼, Icon에는 Missing, SkillPrefab에는 엉뚱한 프리팹이 연결되었다.

 

 

public class SkillData
{
    [Header("Common Stats")]
    public string Tag;
    public string Description;
    public int Level;
    //public Sprite Icon;
    public string IconPath;
}

Sprite 이미지를 위와 같이 Resources 폴더에 넣고 이름을 Skill 이름과 동일하게 변경했다. 그리고 Sprite를 드래그하는 대신 string으로 Resources 폴더의 경로를 저장했다.

 

 

_equipMeleeSkill.sprite = Resources.Load<Sprite>(_playerData.EquipMeleeSkillData.IconPath);
_equipRangedSkill.sprite = Resources.Load<Sprite>(_playerData.EquipRangedSkillData.IconPath);
_equipAreaSkill.sprite = Resources.Load<Sprite>(_playerData.EquipAreaSkillData.IconPath);

 

위 함수로 특수 폴더인  Resources 폴더의 파일을 불러 올 수 있었다!

 

 

 

skillPrefab의 경우, 프리팹의 이름을 Skill 이름과 동일하게 설정했다.

 

 

GameManager.I.ObjectPoolManager.ActivePrefab(skillData.Tag, transform.position + skillData.StartPosition);

 

그리고 이전에 생성했던 ObjectPool을 통해, SkillData의 Tag로 프리팹을 SetActive(true) 하도록 했다.

 

 

회고


오늘은 Json 데이터 저장을 모두 구현했다. 이전에 ScriptableObject로 대부분 구현했기 때문에 Json으로 데이터에 저장하기 위해서 수정한 부분이 정말 많았다. 이번에 Json에 대해서 공부하게 되어서 다행이라고 생각했다. 그리고 Json은 드래그 드롭 데이터는 저장할 수 없다는 것도 알게되었다. Json을 사용하면서 모든 SO를 삭제할 필요는 없지만, 구현한 것을 수정하다보니 매우 복잡해졌고, 다음 프로젝트에서 부터는 꼭 적절한 기능을 나눠서 Json과 SO를 모두 사용하도록 연습하겠다.