์์ดํ
๋จน์ผ๋ฉด ์ธ๋ฒคํ ๋ฆฌ๋ก ๋ฃ๋ ๊ธฐ๋ฅ ๊ตฌํ์ค์ธ๋ฐ ์์ดํ
์ ๋จน์ผ๋ฉด Item ์ ๋ณด๊ฐ Missingย ๋ธ
์ด๋ฐ ์์ผ๋ก..
์ ๊ทธ๋ฐ๊ฐ ํ๋๋
์ด๊ฒ ์์ดํ
๋จน์ผ๋ฉด ์คํ๋๋ ๋ถ๋ถ์ธ๋ฐ
๋งจ๋ฐ์ Destroy(gameobject); << ์ด๋ฐ์์ผ๋ก ๋จน์ผ๋ฉด AmmoPack ๊ฒ์์ค๋ธ์ ํธ ์ง์์ค
Item ์ ๋ณด๋ย ์ด๋ ๊ฒ ๊ฐ์ ธ ์ค๊ณ ์๋๋ฐ
์๋ง ์ฐธ์กฐ๋ณต์ฌ๊ฐ ์ด๋ค์ก๋๋ฐย
AmmoPack์ด Destroy ๋๋ฒ๋ ค์ย ๋ฏธ์ฝ๋จ๋๊ฑฐ๊ฐ์์
item = target; ์ด๋ถ๋ถ์ ๊ณ ์ณ์ผํ ๊บผ๊ฐ์๋ฐ
์ด๋ด๋ ์ด๋ป๊ฒ ํด์ผํจ?ย
๋์ค์ Destory ๋ง๊ณ ์ค๋ธ์ ํธํ๋ง ์ธ๊ป๋ฐ ๊ทธ๋ผ ์๊ด์๊ฒ ์ง๋ง ์ด๋ ๊ฒ Destory ํ๋ ๊ฒฝ์ฐ์
์ด๋ป๊ฒ ํด์ผ๋๋์ง ๊ถ๊ธํจ
์๊ฐํด๋ณธ๊ฒ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ํ๋ ๋ง๋ค์ด์ ๋ฆฌํดํ๋๊ฑด๋ฐ
Item DeepCopy()
{
ย ย Item item = new Item();
ย ย item.data = this.data;
ย ย return item;
}
Item item = this.DeepCopy();
์ด๋ ๊ฒ ํ๊ณ ๋๋ฒ๊น
๋๋ ค๋ดค๋๋ฐ item ์ด null ๋จ๋๋ผ๊ณ
item.data=this.data์์ target.data๊ฐ ๋ค์ด๊ฐ๊ฒ ๋ง์?
deepcopy ๋ฉ์๋๊ฐ ์ด๋ ๋ถ์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ๋ ๊ฒ ํ ๋ ค๋ฉด ์์ดํ ํด๋์ค์ ๋ค์ด๊ฐ์ผ์ง
๊ทธ๋ฆฌ๊ณ ์์ดํ ํด๋์ค๋ ๋ชจ๋ ธ๋นํค์ด๋น์ด ์์ํ์ง๋ง๊ณ ๊ทธ๋ฅ ํด๋์ค์ ๋ฐ๋ก ๋ง๋์ ๊ทธ๋ฌ๋ฉด ์ค๋ธ์ ํธ ์ญ์ ํด๋ ๋๋ ํผ๋ฐ์ค ์๋์ฌํ ๋๊น
๊ทธ๋ฅ ์ด๋ ๊ฒ ๊ณ ์น๋ฉด ๋๋๋ฐ ์ด๊ฑด ๊ฑฐ๋ค๋ ๋ ์๋ณด๋ ๋ณ์ ์ด๋ค
๋น์ฐํ Destory ๋๋ฉด์ ๋ฏธ์ฑ๋๋๊ฑฐ์
Pick ๊ฐ๋ฅํ ์์ดํ ์ธ๋ฒคํ ๋ฆฌ์ ํ์๋ ๋ณด์ ์์ดํ ์ด ๊ฐ์ ๊ฐ์ฒด์ธ๊ฒ ๋ฌธ์ ์ผ. ๋ฅ์นดํผ๋ ํ๋ช ํ ํด๊ฒฐ๋ฐฉ๋ฒ๊ฐ์ง ์๋ค
๊ทธ๋ผ ์ต๋๊ฒ ํ๋๊ฒ ์ข์?
์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ณด์ฌ์ค์ ์์ ๋ชจ๋ฅด๊ฒ ๋ค๋ง item.data = this.data; ์ด๊ฑฐ ๋ฐ๋ก ์๋ซ์ค์ Debug.Log(item); ํด๋ณด์ . Null ๋จ๋ฉด ์ฌ๊ธฐ์ ์ ๋ฌ์ด ์๋๊ฑฐ์์.
๊ทผ๋ฐ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ๋ณดํต ์ด๋ ๊ฒ ๋ง๋ฆ?
์์ดํ ์ ๋ณด๋ง ๊ฐ์ง๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด. ๋๊ฐ์ผ๋ฉด ScriptableObject ๋ก ํจ
์ค์ค ScriptableObject ๊ฐ ์์์ง ๋ด์ผ ๊ฒ์ ํด์ ํด๋ด์ผ๊ฒ ๋ค
์ ๋ ๊ทธ๋ ๊ฒ ํ ๋ฏ
์ธ๋ฒคํ ๋ฆฌ๋ ์๋๋ Item ํด๋์ค๊ฐ 2๊ฐ์ง ์ญํ ์ ํด๋ฒ๋ฆฌ์์. ๊ฒ์์ ๋ชจ๋ฅด๋ ์ ํํ ํ๋จ์ธ์ง ๋๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ํ๋์์ ์์ดํ ์์งํ๋ ์ ๋ Item ์ด๊ณ ์ธ๋ฒคํ ๋ฆฌ๊ฐ ๋ณด์ ํ๋ ์ ๋ณด๋ Item ๊ทธ๋๋ก๋ผ๋ฉด ์ด์ํ๊ธดํจ. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ผ ์ฌ๋ฌ๊ฐ์ง ์๋ค๋ง ๋ญ๊ฐ ๋ ํ๋ก์ ํธ์ ์ข์์ง ์ฝ๋๋ฅผ ๋ค ๊น๋ณด์ง ์๋ ์ด์ ๋ชจ๋ฅด์ง.
๋๋กญ ์์ดํ ๋ ์ธ๋ฒคํ ๋ฆฌ ์ฌ๋กฏ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปจํ ์ด๋์ ์ญํ ์ ํ๊ฒ ํ๊ณ ์์ดํ ์ ์ฐธ์กฐํ๊ณ ๋ง ์๋๊ฒ ๊ฒ์ ๊ตฌ์กฐ ์์ ์ฌ๋ฐ๋ฅธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ ์์ฐ์ค๋ฝ๊ธฐ๋ ํ๊ณ ์