์•ˆ๋…•ํ•˜์„ธ์š” ํ˜„์žฌ ํ•˜์Šค์Šคํ†ค ๋น„์Šทํ•˜๊ฒŒ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ณ ์žˆ๊ณ 

Mirror๋ฅผ ์ด์šฉํ•ด์„œ ์กฐ๊ธˆ์”ฉ ์„œ๋ฒ„๋ฅผ ๋ถ™์—ฌ๋ณด๊ณ  ์žˆ์–ด์š”


ํ˜„์žฌ 1:1 ๋ฐฐํ‹€ ๊นŒ์ง„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ

'๋ฐฐํ‹€' ์”ฌ์— ๋“ค์–ด๊ฐ€๊ธฐ์ „

'๋ฑ ๋นŒ๋”ฉ' ์”ฌ์„ ๋งŒ๋“ค์–ด์„œ '๋ฑ ๋นŒ๋”ฉ' ์”ฌ์—์„œ ๋ชฉ๋ก์— ์žˆ๋Š” ์นด๋“œ๋“ค์„ ๊ณจ๋ผ ๋ฑ์„ ์งœ๊ณ 


๊ทธ ๋ฑ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์„œ '๋ฐฐํ‹€'์”ฌ์— ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(๋ฑ ๋นŒ๋”ฉ์”ฌ์—์„  ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์€ ์—†๋Š”๊ฑธ๋กœ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ๋ฐฐํ‹€์”ฌ์œผ๋กœ ๊ฐ€์•ผ ํ†ต์‹  ์‹œ์ž‘)


์ฒ˜์Œ ํ…Œ์ŠคํŠธ์šฉ๋„์—์„ 


DeckData deckData = ScriptableObject.CreateInstance<DeckData>();

deckData.deck = buildingDeck; //๋ฑ ๋นŒ๋”ฉ์”ฌ์—์„œ ์ง  ๋ฑ ๋ณ€์ˆ˜

string path = "Assets/Resources/NewDeckData.asset";

AssetDatabase.CreateAsset(deckData, path);

AssetDatabase.SaveAssets();


์ด๋Ÿฐ์‹์œผ๋กœ AssetDatabase๋กœ ์Šคํฌ๋ฆฝํŠธ์˜ค๋ธŒ์ ํŠธ๋กœ ์ €์žฅํ•ด์„œ ๋กœ๋“œํ•˜๋Š”๊ฑด ์„ฑ๊ณต์„ ํ–ˆ๋Š”๋ฐ

๋ฉ€ํ‹ฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋ ค ๋ณด๋‹ˆ ์•Œ๊ณ ๋ณด๋‹ˆ AssetDatabase๋Š” ์œ ๋‹ˆํ‹ฐ ์—๋””ํ„ฐ ์ „์šฉ ํด๋ž˜์Šค๋ผ์„œ ๋นŒ๋“œํ•˜๋ ค๋‹ˆ๊นŒ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋”๋ผ๊ตฌ์š”


์ฐธ๊ณ ๋กœ DeckData์˜ ๊ตฌ์กฐ๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค.


a17a38ad290a76b660b8f68b12d21a1d38ca9a48fd

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์•ˆ์˜ CardAndAmount ์ŠคํŠธ๋ŸญํŠธ๋Š”


a17a38ad290a6ae87eb1d19528d527031d3087bcd8

์ด๋ ‡๊ฒŒ ๋‘๊ฐ€์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

ScriptableCard๋Š” ์นด๋“œ์ •๋ณด์ด๊ณ 

int amount๋Š” ํ•ด๋‹น ์นด๋“œ๋ฅผ ์ด ๋ช‡์žฅ ๊ฐ€์งˆ๊ฑด์ง€์— ๋Œ€ํ•œ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค


์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์นด๋“œ ํด๋ž˜์Šค๋Š”

์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์†ํ•˜๋ฉฐ

string, int, enum, struct๋ฆฌ์ŠคํŠธ, Dictionary..๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜์–ด ์œ ํŠœ๋ธŒ ๊ฐ•์ขŒ๋ณด๊ณ  ์•ผ๋งค๋กœ ๊ธ์–ด๋งŒ๋“ ๊ฑฐ๋ผ Dictionary์˜ ์ •ํ™•ํ•œ ์—ญํ• ์„ ์•„์ง ์ž˜ ํŒŒ์•…๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค)



a17a38ad290a6ce87eb1d19528d52703e3eef782423830

์•„๋ฌดํŠผ ์ด๋Ÿฐ๊ตฌ์กฐ์ธ๋ฐ..(์‚ฌ์ง„์ด ์ข€ ์ž‘์•„์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค..)


๋ฑ ๋นŒ๋”ฉ์”ฌ์—์„œ ์ง  ๋ฑ์˜ ์ •๋ณด์ธ DeckData๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•ด์„œ ์ „๋‹ฌํ• ๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ฒ€์ƒ‰ํ•˜๋‹ˆ PlayerPrefs๋ฅผ ๋งŽ์ด๋“ค ์ถ”์ฒœํ•ด์„œ ์‹œ๋„๋ฅผ ํ•ด๋ณด์•˜์œผ๋‚˜

playerprefs ArgumentException: Cannot deserialize JSON to new instances of type 'DeckData' ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค ์ฑ—gptํ•œํ…Œ๋„ ๋ฌผ์–ด๋ด์„œ ์ฝ”๋“œ ์ฒดํฌํ•ด๋ดค๋Š”๋ฐ..์•ˆ๋˜๋„ค์š”..;



a17a38ad290a6de87eb1d19528d52703f9d07329afd6

ํ•ด๋‹น ์„ค๋ช…์ฒ˜๋Ÿผ DeckDataManagerํด๋ž˜์Šค ์Šคํฌ๋ฆฝํŠธ๋„ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๊ณ 



a17a38ad290a6ee87eb1d19528d527036d1a159eea65

(GPT์„ค๋ช…์—์„  Startํ•จ์ˆ˜์— ๊ตฌํ˜„์„ ํ•ด๋‘์—ˆ์ง€๋งŒ ์ €๋Š” ์ ์ ˆํ•œ ์œ„์น˜์— ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์จ๋‘ )


์ด๋ ‡๊ฒŒ ํ–ˆ๋Š”๋ฐ playerprefs ArgumentException: Cannot deserialize JSON to new instances of type 'DeckData' ๋ฌธ์ œ๋•Œ๋ฌธ์—

์”ฌ์ด ๋„˜์–ด๊ฐ€์„œ ๋ถˆ๋Ÿฌ์™€์ง€๋Š”์ˆœ๊ฐ„ ํ„ฐ์ง€๋Š”๋ฐ ์›์ธ์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค..



a17a38ad290a6be87eb1d19528d52703ea731ce0f17a01

๋Œ€์ถฉ ๊ทธ๋ฆผ์œผ๋กœ ์š”์•ฝํ•˜๋ฉด ์ด๋Ÿฐ ๊ตฌ์กฐ๋ฅผ..์›ํ•˜๋Š”๋ฐ.. ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ์•ˆ๋˜์„œ ๊ณ ๋ฏผ์ค‘์ž…๋‹ˆ๋‹ค..ใ… 


์•„๋‹ˆ๋ฉด ๊ตณ์ด PlayerPrefs๋ฅผ ์“ฐ์ง€์•Š๊ณ  ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์šด๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? ๋„ˆ๋ฌด ์—ฌ๊ธฐ์— ๋งค๋ชฐ๋˜์–ด ๊ฐ€๋Š” ๊ธฐ๋ถ„์ด๋ผ..๋‹ค๋ฅธ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ ์‹ถ๋„ค์š”

AssetDatabase๊ฐ€ ์œ ๋‹ˆํ‹ฐ ์—๋””ํ„ฐ ์™ธ์—์„œ๋„ ์ž‘๋™ํ•˜๋ฉด ์ข‹์•˜์„ํ…๋ฐ..์ฉ..์•„์‰ฝ๋„ค์š”..