dotnet 8.0 ์ฝ˜์†”๋กœ ์ž‘์„ฑํ–ˆ์Œ.


public class CharacterStat
{
public int HP { get; set; }
public int MP { get; set; }
public int ATK { get; set; }
}

public class CharacterGameData
{
public string Name { get; set; } = "Default";
public CharacterStat Stat { get; set; } = new();
}


์บ๋ฆญํ„ฐ ์Šคํƒฏ ๋‹ด๊ณ , ์ด๋ฆ„ ๋‹ด๊ณ ... ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ด์„ ๊ฑฐ์ž„.

Json์“ด๋‹ค๊ณ  ํ–ˆ์œผ๋‹ˆ System.Text.Json ์‚ฌ์šฉํ•  ๊ฑฐ์ž„.

JsonSerializer๊ฐ€ ์ง๋ ฌํ™” ํ•  ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ๋Š” ์ง๋ ฌํ™” ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฉค๋ฒ„๋ฅผ get; set; ํ”„๋กœํผํ‹ฐ๋กœ ํ‘œ์‹œํ•  ๊ฒƒ.

์ •๋ง ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์กฑํ•œ ๊ฒŒ ๋งŽ์Œ. ์‚ด์€ ์•Œ์•„์„œ ๋ถ™์ด๋ฉด ๋จ.

์—…๊ทธ๋ ˆ์ด๋“œ ๊ธฐ๋Šฅ์ด๋ผ๋˜๊ฐ€... ๊ทธ๋Ÿฐ ๊ฑด CharacterGameData ์ฐธ์กฐํ•˜๋Š” ํด๋ž˜์Šค ํ•˜๋‚˜ ์ž‘์„ฑํ•ด์„œ ๊ฐ์ข… ์—…๊ทธ๋ ˆ์ด๋“œ ๊ธฐ๋Šฅ, ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ ๊ธฐ๋Šฅ, ๋ณ„๋ณ„ ๊ธฐ๋Šฅ๋“ค ๋‹ค ๋งŒ๋“ค์–ด์„œ ์™ธ๋ถ€์— ์ œ๊ณตํ•˜๋ฉด ๊น”๋”ํ•จ. ์—ฌ๊ธฐ์„  CharacterSlot์ด๋ผ๊ณ  ํ•ด๋ณด์ž.


public class CharacterSlot

{
private readonly CharacterGameData gameData;


public CharacterSlot(CharacterGameData gameData)
{
this.gameData = gameData;
}

public void UpgradeHP()
{
gameData.Stat.HP += 1;
}

public void UpgradeMP()
{
gameData.Stat.MP += 1;
}

public void UpgradeATK()
{
gameData.Stat.ATK += 1;
}
}


์ง๋ ฌํ™”๋  ํด๋ž˜์Šค์— ๊ธฐ๋Šฅ ์ž‘์„ฑํ•˜๋Š” ๊ฑด ๊ฒฝํ—˜์ƒ ์ข‹์ง€ ์•Š์•˜์Œ. ์–ด๋””๊นŒ์ง€๋‚˜ ๋ฐ์ดํ„ฐ๋กœ๋งŒ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฒŒ ํ˜„๋ช…ํ•œ ๋А๋‚Œ



์ฝ˜์†”์—์„œ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ์ฝ”๋“œ, ๊ท€์ฐฎ์•„์„œ CharacterSlot์€ ์•ˆ ์”€.


using System.Text.Json;


var charactersData = new Dictionary<string, CharacterGameData>
{
{ "Alice", new() },
{ "Bob", new() }
};

charactersData["Alice"].Name = "Alice";
charactersData["Alice"].Stat.HP = 1;
charactersData["Alice"].Stat.MP = 2;
charactersData["Alice"].Stat.ATK = 3;

charactersData["Bob"].Name = "Bob";
charactersData["Bob"].Stat.HP = 4;
charactersData["Bob"].Stat.MP = 5;
charactersData["Bob"].Stat.ATK = 6;

var aliceSerialized = JsonSerializer.Serialize(charactersData["Alice"]);
var bobSerialized = JsonSerializer.Serialize(charactersData["Bob"]);

Console.WriteLine(aliceSerialized);
Console.WriteLine(bobSerialized);

// ์ถœ๋ ฅ ๊ฒฐ๊ณผ
// {"Name":"Alice","Stat":{"HP":1,"MP":2,"ATK":3}}
// {"Name":"Bob","Stat":{"HP":4,"MP":5,"ATK":6}}