์ ๋ํฐ ํํ ๋ฆฌ์ผ์์ ์์ดํ ๋ฆฌ์คํธ์ ํ๋ํ๋ ํ๋ฆฌํฉ ๋ฑ๋ก์ ํ๋๋ผ๊ณ
๊ทผ๋ฐ ๋๋ ๊ทธ๋ฐ๊ฒ ๋๋ฌด ๊ท์ฐฎ์์ ๊ทธ๋ฅ ํด๋์ SO ํ๋ํ๋์ ์์ดํ ์ ์ ์ฅํด๋
๊ทธ๋์ ๊ทธ SO๋ฅผ ํด๋์งธ๋ก ๋ฆฌ์คํธ๋ก ๋ถ๋ฌ์ค๊ธฐ ์ํด
๊ทผ๋ฐ ์ด๋ฌ๋๊น ์์ ๊ฒ์ ์์ฒด๊ฐ ์คํ์ด ์๋จ. ๋๋ฒ๊น ์ ํ๊ณ ์ถ์๋ฐ ๊ฑ ๊ฒ์ ์ ๋ํฐ์์ ์ปดํ์ผํ ๋ ์์ฒด๊ฐ ๋ฉ์ถฐ์ ๋๋ฒ๊น ์์ฒด๊ฐ ์๋จ
๊ทธ๋์ ์์ ๊ทธ๋ถ๋ถ ์ญ์ ํ๋ ๋ค์ ์ํํ๊ฒ ๋์๊ฐ.
์์ ์ ๋ํฐ ์๋ํฐ์์ ์ง๋ ฌํ์์ผ์ ํ๋ฆฌํฉ ํ๋ํ๋ ๋ฑ๋กํ๋๊น ์ด๊ฑด ์๋จ.
๊ทธ๋ ๋ค๋ฉด ์ด๋ ๊ฒ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๋ค๋๊ฑด๋ฐ
SO๋ก ๋ถ๋ฌ์ค๊ธฐํด์ ๊ทธ๋ฐ๊ฑด๊ฐ? ์๋๋ฉด ๋ด๊ฐ ๋ญ๋ฅผ ์๋ชป์ฐ๊ณ ์๋๊ฑธ๊น?
๋ณดํต RPG๊ฒ์์์ ์์ดํ ์ ๋ณด ๋ถ๋ฌ์ฌ๋ ์ด๋ป๊ฒ ๋ถ๋ฌ์ด?
[SerializeField] private string itemDataFolderName = "ItemData"; // Resources ํด๋ ๋ด์ ์๋ Scriptable Object๋ค์ด ์ ์ฅ๋ ํด๋ ์ด๋ฆ
[SerializeField] public List<Item> itemList = new List<Item>();// ๋ชจ๋ ์์ดํ ์ ์ ์ฅํ๋ ๋ฆฌ์คํธ
private void LoadItems()
{
// Resources ํด๋์์ ๋ชจ๋ Scriptable Object ๋ก๋
ItemData[] itemDataArray = Resources.LoadAll<ItemData>(itemDataFolderName);
itemDataList.AddRange(itemDataArray);
// ๋ก๋ํ Scriptable Object๋ค์ ์ด์ฉํ์ฌ itemList๋ฅผ ์ฑ์
foreach (var itemData in itemDataList)
{
itemList.Add(CreateItemFromData(itemData));
}
}
์ด ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์๋๋ฐ ์ฝ๋๋ฅผ ์ค์๋ฅผ ์ํ๊ฑฐ ๊ฐ์๋ฐ
๋ญ๊ฐ ๋ฌธ์ ค๊น
์ดํด
์
์๋ ค์ฃผ๊ณ ์ดํด๋ผ ๊ทธ๋
SO๋ ์ ์์จ๋ด์ ๋ชจ๋ฅด์ง๋ง ๋ณดํต RPG์์ xml, json์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ json์ผ๋ก ์ ์ฅํ๊ณ ๊ฒ์ ๋ก๋์์ Dictionary์ ์ ์ฅํด ํด๋น ์์ดํ ์ Id๋ฅผ ์ด์ฉํด ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
๊ทผ๋ฐ JSON์ ์ ๊ฐ ์ฌ์ฉํด๋ณด๋๊น ํ๋ํ๋ ๋จ์ด ์คํ๊ฐ์๊ฑฐ๋๋ฌธ์ ์๋ฌ ์ผ์ด๋๋ ๊ฒฝ์ฐ๊ฐ ์ฆ์์, SO๋ฅผ ์ธ๋ ค๊ณ ํ๋๋ฐ์ ์ ์ฝ๋์ ๋ญ๊ฐ ํ๋ฆฐ๊ฑด ์์ฃ ?
์๋ํฐ๊ฐ ์์ ์๋์ํ๋๊ฑฐ๋ฉด, ์์ฑํ์ ์ฝ๋ ๋ฌธ์ ๋ ์๋ํ ๋ ํฌ๋์ ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด์๊ณ , ํด๋น ์ ๋ํฐ ๋ฒ์ ์ผ๋ก ๋ฌธ์ ๊ฒ์ํด ๋ด์ผํ ๊ฑฐ๊ฐ๋ค์
๊ณ ๋ง์ต๋๋ค.
SO๋ง๋ค cs ํ์ผ ๋ฐ๋ก ๋์ด์๋์ง ํ์ธํด๋ณด์ .. cs ํ์ผ ํ๋์ SO ์ฝ๋ ์ฌ๋ฌ๊ฐ ์์ฑํ๋ฉด ์ค๋ฅ๋๋๋ฐ
์ฒดํฌ ํจ ํด๋ด์ผํ ๋ฏ ๊ณ ๋ง๋ค
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ถ์ฒํ์๋ฉด ๊ทธ๋ฅ json ํ์ฑํด์ ์จ๋ผ. ์ ์ง๋ณด์ ๊ด๋ฆฌ์ ํจ์ฌ ํจ๊ณผ์ ์ด๋ค. ๋์ค์ ์์ดํ ๊ฐฏ์ ๋ช๋ฐฑ๊ฐ์ฉ ๋๋ค ๋ณด๋ฉด so๋ ์ธ๊ฒ ๋ชป๋๋ค.
ํด๋์งธ๋ก ๋ถ๋ฌ์ค๋๊ฒ ๋๋?
์ด๊ฒ ๋ฌธ์ ์ธ๊ฐ