์„ธ์ด๋ธŒ ๋กœ๋“œ. ์ง๋ ฌํ™” ์—ญ์ง๋ ฌํ™”. ํ•ด๋„ ํ•ด๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.


์ง€๋‚œ ๊ฒŒ์ž„ ๋งŒ๋“ค๋•Œ๋Š” Json์œผ๋กœ ์„ธ์ด๋ธŒ ๋กœ๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ,


๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ œ์ผ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜์—ˆ๋˜๊ฒŒ ์—ญ์ง๋ ฌํ™” ๋ถ€๋ถ„์ด์—ˆ์Œ.



Actor{

int Age;

string Name;

}


Sword{

int Damage;

}


์ด๋Ÿฐ๊ฑฐ์•ผ ์„ธ์ด๋ธŒ ๋กœ๋“œ ํ•˜๊ธฐ ์‰ฝ์ง€. ์•ˆ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋ถ€ ์ง๋ ฌํ™” ๋˜๋Š” ์›์‹œ๋ฐ์ดํ„ฐ๋‹ˆ๊นŒ.




๊ทผ๋ฐ ๋‹ค์Œ์€ ์–ด๋–ป๊ฒŒ ํ•จ?


Actor{

int Age;

string Name;

Weapon Sword; <- ๊ฐœ์ฒด์ฐธ์กฐ! (์˜ˆ์‹œ ๋ณด์ด๋ ค๊ณ  ์–ด๊ฑฐ์ง€๋กœ ์ง  ๊ตฌ์กฐ๋‹ˆ๊นŒ ์ด๊ฒŒ ์™œ ์—ฌ๊น„๋ƒ ๋ฌป์ง€๋ง์•„์ค˜)

}




์ด๋Ÿฐ ๊ตฌ์กฐ๊ฐ€ ๋˜๋ฉด, Actor๋ฅผ ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™” ํ•˜๊ณ  ๋‚˜๋ฉด Actor.Weapon == null ์ด ๋˜๋ฒ„๋ฆฌ์ž–์•„.


๊ทธ๋Ÿผ Actor.Init(Weapon weapon) ๋“ฑ์„ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑํ•ด์„œ Weapon ๋งŒ๋“ค์–ด์„œ ์ผ์ผ์ด ๋‹ฌ์•„์ค˜์•ผ ํ•จ?


...

var actor = new Actor (Serializer.Deserial(SaveData.Actor));

var weapon = new Weapon (Serializer.Deserial(SaveData.Weapon));

Actor.Init(weapon); <- ์ด ๋ถ€๋ถ„์ด ํ•˜๋“œ์ฝ”๋”ฉ (์ €๋ฒˆ ๊ฒœ ๋งŒ๋“ค๋•Œ๋Š” ์ด๋ ‡๊ฒŒ ํ–ˆ์Œ;;)




ECS์˜ ๊ฒฝ์šฐ์—๋Š” ์ €์žฅํ• ๋•Œ ๊ฐ ๊ฐ์ฒด์˜ ID ๋ฅผ int ๊ฐ’์œผ๋กœ ๋”ฐ๋†“๊ณ  ID๋งŒ ์ €์žฅํ•ด์„œ ์„ธ์ด๋ธŒ ๋กœ๋“œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์จ๋ณธ์ ์€ ์žˆ์Œ.


๊ทผ๋ฐ ๊ต‰์žฅํžˆ ๋ฐ”๋ณด๊ฐ™๋”๋ผ. ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์„ ๋‹ค ๊บผ๋‚ด๋†“๊ณ  ID๋กœ ์„œ๋กœ ์ด์–ด์ฃผ๊ธฐ ์‹ค๋œจ๊ธฐ ๋†€์ด ํ•ด์ค˜์•ผ ํ•˜๋‹ˆ.


๊ทธ๋•Œ ๋งŒ๋“  ์„ธ์ด๋ธŒ๋กœ๋” : https://github.com/raveneer/EntitasSaveLoader




์งˆ๋ฌธ์š”์•ฝ


๊ฐ์ฒด๊ฐ„์˜ ์ฐธ์กฐ๊นŒ์ง€ ์„ธ์ด๋ธŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๋ฆฌ์–ผ/๋””์‹œ๋ฆฌ์–ผ ์†”๋ฃจ์…˜์ด ์กด์žฌํ•ด?





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced83fa11d0283109f613b0c2e59fad7a6296a8123482d7240e8dbeabf297321ffd80f16d7721a1c59f3a61e2dde2756e512808b48172b7652585fd


ํ•˜๋“œ์ฝ”๋”ฉ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•˜๊ณ ์‹ถ์ง€ ์•Š์€ ๋ฐ์Šค์›…...