์˜ค๋Š˜ ์ถ”๊ฐ€ํ•œ ์„ธ์ด๋ธŒ๋กœ๋“œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์–˜๊ธฐํ•ด๋ณด๋ คํ•จ


์ผ๋‹จ ๊ฒŒ์ž„ํ•˜๋‹ค ์ค‘๊ฐ„์— ๊บผ์ง€๋ฉด ๋นก์น˜๊ธฐ๋„ํ•˜๊ณ  ๋ถ„๊ธฐ์  ๋งŒ๋“ค๋ฉด ๋ถ„๊ธฐ์  ๋งŒ๋“ค์–ด์„œ ์›ํ•˜๋Š” ์นด๋“œ ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ๋‹ค์‹œ ์‹œ์ž‘ํ• ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์ž๋™์ €์žฅ ๋ฐฉ์‹์„ ์ฑ„์šฉํ•จ.

์ „์ฒด์ ์ธ ํ๋ฆ„์€(ํ”Œ๋กœ์šฐ ์ฐจํŠธ ๋งŒ๋“ค๊ธฐ ๊ท€์ฐฎ์•„์„œ ๋ง๋กœํ•จ)

๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•œ๋‹ค -> SaveData.xml ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒˆ๋กœ ์‹œ์ž‘, ์žˆ์œผ๋ฉด Load -> ํฌ์ปค๋กœ ๊ธฐ๋ฌผ ๋ฝ‘์œผ๋ฉด ์ž๋™ ์ €์žฅ


1. ์„ธ์ด๋ธŒ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž




xml ํŒŒ์‹ฑ์ด ๋“ค์–ด๊ฐ€๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๋งŽ์ด ํ•ด๋ดค์ง€๋งŒ... C#์œผ๋กœ ํ˜ผ์žํ•˜๋Š”๊ฑด ์ฒ˜์Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ๋ง˜๋Œ€๋กœ ์งฐ๋‹ค.

์–ด์ฐจํ”ผ ์„ธ์ด๋ธŒ ๋กœ๋“œ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€๊ธˆ์€ ๋ช‡๊ฐœ ์—†๊ธฐ๋„ ํ•˜๊ณ  ์„ธ์ด๋ธŒ ํŒŒ์ผ์€ ์ตœ๋Œ€ 1๊ฐœ๊ธฐย ๋•Œ๋ฌธ์— ๋Œ€์ถฉ ๋•Œ๋ ค๋ฐ•์•˜์Œ

root๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ณ  root์˜ child๋กœ GameInfo์™€ TowerInfo๋ฅผ ๋„ฃ์–ด์ค€๋‹ค

GameInfo๋Š” ๊ณจ๋“œ, ํ”Œ๋ ˆ์ด์–ด ์ฒด๋ ฅ, ํ˜„์žฌ ๋ผ์šด๋“œ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฒƒ์ด๊ณ 

TowerInfo๋Š” ํƒ€์›Œ์˜ ์œ„์น˜์™€ ์–ด๋–ค ๊ธฐ๋ฌผ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฒƒ์ด๋‹ค

---------------------------------------------------------------------------------------------------------------------------------------------

์ถ”๊ฐ€๋  ์ž์‹๋…ธ๋“œ๋กœ๋Š”

PokerInfo(ํฌ์ปค๊ฒŒ์ž„ ๋„์ค‘์— ์ €์žฅ์‹œํ‚ค๋ฉด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)

MissionInfo(๊ณง ์ถ”๊ฐ€๋  ๋ฏธ์…˜ ํด๋ฆฌ์–ด ์—ฌ๋ถ€ ํ™•์ธ)

BonusInfo(ํŠน์ „ ์ถ”๊ฐ€ ์˜ˆ์ •์ธ๋ฐ ํŠน์ „ ์—ฌ๋ถ€ ํ™•์ธ)

๋“ฑ์ด ์žˆ์Œ

์ˆ˜์ง‘ํ˜• ์ปจํ…์ธ ๋Š” ๊ฒŒ์ž„ ์ „์ฒด์ ์œผ๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์ด๋ธŒ ๋กœ๋“œ์™€๋Š” ๋ณ„๊ฐœ

---------------------------------------------------------------------------------------------------------------------------------------------

๊ฐ์„คํ•˜๊ณ  towerInfo๋Š” towerPair๋ผ๋Š” ๊ตฌ์กฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ position๊ณผ index๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ

myTower๋ผ๋Š”ย element๋ฅผ ๋งŒ๋“ค์–ด์„œย ๋‘ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋‹ˆ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ผ์„œ ์ผ๋‹จย element๋ฅผ towerPosition towerIndex ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ–ˆ๋‹ค. ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ผ์„œ ๋ฌด์‹ํ•˜๊ฒŒ towerPosition1 towerIndex1 ์ด๋Ÿฐ์‹์œผ๋กœ ์ €์žฅํ–ˆ๋Š”๋ฐ ํ˜น์‹œ xmlํŒŒ์‹ฑ ์ž˜ํ•˜๋Š” ์‚ฌ๋žŒ ์žˆ์œผ๋ฉด ๊ฟ€ํŒ ์ข€ ์•Œ๋ ค์ค˜๋ผ. ๋ง๋กœํ•˜๋ฉด ์ž˜ ๋ชป์•Œ์•„๋จน์–ด์„œ ๋งํฌ ์ฃผ๋ฉด ๋” ์ข‹๊ณ 



2. Load ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž


Save๋ฅผ ํ–ˆ์œผ๋‹ˆ Load๋Š” ๊ฐœ๊ฟ€์ด๊ฒ ๋…ธ ์‹ถ์—ˆ์ง€๋งŒ Save๋ฅผ ์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ์—์„œ Load๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•ด๋†“์€ ๊ธ€์„ ๋น„๊ณต๊ฐœ๋กœ ๋Œ๋ ค๋†”์„œ ๋‹ค๋ฅธ ๊ธ€์ด๋ž‘ ๋น„๊ตํ•˜๋ฉด์„œ ์• ๋จน์—ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋’ค์ ธ๋ณผ๊นŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๊ท€์ฐฎ์•„์„œ ์ผ๋‹จ ๋‹ค๋ฅธ ์˜คํ”ˆ์†Œ์Šค ์ฐธ๊ณ ํ•จ

load๋Š” ๋ณ„๊ฑฐ์—†๋‹ค. ํ•ด๋‹นํ•˜๋Š” ๋…ธ๋“œ ์ฐพ์•„์„œ ToInt32๋กœ convertํ•ด์ฃผ๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ string์„ int๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  GameManager์— ์žˆ๋Š” Loadํ•จ์ˆ˜๋กœ ๋ฐ”๋กœ๋ฐ”๋กœ callํ•ด์ค€๋‹ค.


3. GameManger ์ฝ”๋“œ

๊ฒฐ๊ตญ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š”๊ฑด GM์ด๊ธฐ ๋•Œ๋ฌธ์— GM ์ฝ”๋“œ์—์„œ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค

PlayerGold์™€ HP CurrentWave๋Š” get set๋งŒ ํ•˜๋ฉด ์•Œ์•„์„œ ์ ์šฉ๋˜๊ธฐ์— get set์œผ๋กœ save load๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค.


Load๋ฅผ ์œ„ํ•œ ๊ณผ์ •๋„ ๋‚˜๋ฆ„ ๊ท€์ฐฎ์•˜๋Š”๋ฐ ์ผ๋‹จ ๋ฌด์ง€์„ฑ์œผ๋กœ ํƒ€์ผ์„ ๊น”์€ ๋•๋ถ„์— ํƒ€์ผ position์— ๋”ฐ๋ฅธ index๊ฐ€ ํ™•๋ณด๋˜์ง€ ์•Š์•˜์—ˆ๋‹ค

๋ฐ‘์—์„œ ์„ค๋ช…ํ•  ์˜ˆ์ •์ด์ง€๋งŒ tile manager๋ฅผ ๋งŒ๋“ค์–ด index๋กœ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Œ.

์–ด์จŒ๋“  ํƒ€์ผ index์™€ ํƒ€์›Œ index ๋ชจ๋‘ ์•Œ๊ณ  ์žˆ์œผ๋‹ˆ ์ €์žฅ๋œ ์œ„์น˜์— ์ €์žฅ๋œ ํƒ€์›Œ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•ด ์Šคํฐ๋งŒ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์•ž์— ์ฝ”๋“œ๋ฅผ ์„ค๋ช…ํ•˜์ง€ ์•Š์•„์„œ ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ต๊ธดํ•œ๋ฐ ๊ธฐ์กด์— ์“ฐ๋˜ SpawnTowerํ•จ์ˆ˜๋Š” ์นด๋“œ ๋“œ๋กœ์šฐ ๋ฒ„ํŠผ๊ณผ ์ฒดํฌ๋ฅผ ๋ˆŒ๋Ÿฌ์•ผ๋งŒ ์ž‘๋™์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ถ€๋ถ„์˜ ์กฐ๊ฑด๋ฌธ๋งŒ ๋บ€ SpawnLoadTowerํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์ค˜์•ผํ–ˆ๋‹ค. ์–ด์ฐจํ”ผ ๊ธฐ๋Šฅ์€ ๋˜‘๊ฐ™์•„์„œ ํ•œ์ค„๋งŒ ๋นผ๊ณ  ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๋‚˜์ค‘์— ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์€ ๋‹ค์‹œ ํ•จ์ˆ˜ํ™” ํ•ด์•ผํ• ๋“ฏ





ํƒ€์ผ ๋งค๋‹ˆ์ € ์ฝ”๋“œ ์ผ๋ถ€์ธ๋ฐ, tile์ •๋ณด๋Š” Serializefield๋กœ ์ง๋ ฌํ™”ํ•ด์„œ ๋งค๋‹ˆ์ € ๊ฐ์ฒด์— ๋ฐ•์•„๋ฒ„๋ ธ๊ณ  ํƒ€์›Œ ๋งŒ๋“ค๋•Œ๋งˆ๋‹ค AddTowerInfo ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ towerPair ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ด์ค€๋‹ค. Save๊ธฐ๋Šฅ ์‚ฌ์šฉ์‹œ์—” GetTowerInfoํ•จ์ˆ˜๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„๊ฐ„๋‹ค.



Save Load ์ฝ”๋“œ๋Š” ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜์ง€๋งŒ XmlํŒŒ์‹ฑ์ด๋ผ๋Š”๊ฒŒ ํ•ญ์ƒ ์–ธ์–ด๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ๋ฒ• ์ฐพ๋Š”๊ฒŒ ๊ท€์ฐฎ์•„์„œ ๊ณ„์† ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์ด์ œ ๊ฒจ์šฐ ํ–ˆ๋‹ค... ํŒŒ์‹ฑ ๋ฐ์ดํ„ฐ ์ฒด๊ณ„ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ข€ ๋ฐฐ์›Œ์•ผ ํ•  ๋“ฏ.

๋กœ๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„๋œ ์˜์ƒ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฒ ์Œ ์˜ค๋Š˜๋„ ๋ด์ค˜์„œ ๊ณ ๋ง™๋‹ค.



๊ฐœ๋ฐœ์ผ์ง€ ๋‹ค์‹œ๋ณด๊ธฐ

#1

https://gall.dcinside.com/m/game_dev/116598

[์— ์—์Šค๊ฒŒ์ž„์ฆˆ] ํ”ฝ์…€ ํฌ์ปค ๋””ํŽœ์Šค ๊ฐœ๋ฐœ์ผ์ง€ #1 - ๊ฒŒ์ž„ ๊ฐœ์š”2022๋…„ 7์›”๋ถ€ํ„ฐ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•œ ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„์ธ๋ฐ ์จ์•ผ์ง€ ์จ์•ผ์ง€ ํ•˜๋‹ค๊ฐ€ ๊ณ„์† ๋ฏธ๋ฃจ๊ณ  ์˜ฌํ•ด ์”๋‹ˆ๋‹ค์‹ค์ œ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•œ๊ฑด 9์›”๋ถ€ํ„ฐ๋ผ ์ฒ˜์Œ ์˜ฌ๋ฆฌ๋Š”๊ฑฐ์น˜๊ณ  ์–‘์ด ๋งŽ์œผ๋‹ˆ ์ดํ•ดํ•ด์ฃผ์‹ญ์‡ผ์šฐ์„  ํ”ฝํฌ๋””๋Š” ์Šคํƒ€ ์œ ์ฆˆ๋งต "ํ—ฌ ํฌ์ปค ๋””ํŽœ์Šคgall.dcinside.com



#2

https://gall.dcinside.com/m/game_dev/116609

[์— ์—์Šค๊ฒŒ์ž„์ฆˆ] ํ”ฝํฌ๋”” ๊ฐœ๋ฐœ์ผ์ง€ #2 ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์›๋ž˜ 2๋กœ ํ•ต์‹ฌ ํƒ€์›Œ ๊ธฐ๋ฌผ๋“ค ์„ค๋ช… ๊ฒธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ณด์—ฌ์ค„๋ผํ–ˆ๋Š”๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ชจ๋“ˆ ๋งŒ๋“ ๊ฑฐ๋ถ€ํ„ฐ ์จ๋ณด๋ คํ•จ์• ๋‹ˆ๋ฉ”์ดํ„ฐ ์•ˆ์“ฐ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•˜์‹œ๋Š” ๋Šฅ๋ ฅ์ž๋ถ„๋“ค์€ ์ด๋ฏธ ๋งŽ๊ฒ ์ง€๋งŒ, ๋‚˜๋ฅผ ๋น„๋กฏํ•œ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด๋Ÿฐ๊ฑธ ์ž˜ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ๊ธฐgall.dcinside.com