개발 TIL

내일배움캠프 15일차 TIL 내용 정리

yun-wj1126 2025. 2. 12. 23:07

Lv이 올라가지 않는 문제가 생겼다. 보니까 프로퍼티를 제대로 작동을 못시켜서 나는 문제였다.

value를 넣었어야 했는데 value도 없이 프로퍼티를 사용할려고 해서 난 문제였다.

 

그리고 json파일로 저장 / 불러오기를 했는데 Player 부분을 처음에 불러올때 부터 문제였다. 

저장은 했는데 불러오면 hp mp xp 3가지가 제대로 나오지 않았다.

왜그런지 고민을 하면서 빈생성자도 생성해보고, 프로퍼티도 바꿔보고 했지만...해결할 수없었다.

그래서 우리는 튜터님에게 가서 여쭈어봤고 튜터님이 확인한 결과 직렬화 하고 역진렬화 할때 불러오는 순서에 따라 hp mp xp가 0이 될수 있었다. 그래서 튜터님은 

[JsonConstructor]
public Player(string name, JobType playerJob, int equipAtk, int equipDef, int gold, int mp, int maxMp, int hp, int maxHp, int xp, int maxXp, int level, int atk, int def, int critical, int dexterity, bool isDead = false) : base(level, atk, def, hp, critical, dexterity, isDead)
{
    Name = name;
    PlayerJob = playerJob;
    EquipAtk = equipAtk;
    EquipDef = equipDef;
    Gold = gold;

    MaxMp = maxMp;
    MaxHp = maxHp;
    MaxXp = maxXp;

        Mp = mp;
    Hp = hp;
    Xp = xp;
}

이렇게 생성자를 만들어 주셨고 작동을하니 잘 작동 했다. 

왜인지 설명해 주셨는데 프로퍼티가 작동을 할때 Mp에서는 MaxMp를 필요로 한다 그런데  MaxMp가 아직 0인데 Mp가 먼저 할당이 되면 프로퍼티에 의해 0으로 바꾸어 버리는 것이였다. 이와 같이 Hp, Xp도 똑같은 이유였다.! 해결완료!