ํ์ฌ ํ์ผ๋ก ๊ฒ์ ๊ฐ๋ฐ ์งํ์ค์ ๋๋ค.
์์์ ํ๋ ์ด์ด๊ฐ ์ ์ด ์ ๋๋ค์ผ๋ก ์์ดํ ์ ๋จ์ด๋จ๋ฆฌ๊ณ
์ด ์์ดํ ์ ์ ์ด ์, ์ธ๋ฒคํ ๋ฆฌ์ ์ ์ฅํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ๋ ํด๋์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ ํํ ๋ฆฌ์ผ ์ฌ์์ ์์ํ์ฌ 1์คํ ์ด์ง๋ก ๋์ด๊ฐ๋ฉด์ ๋ฐ์ํ์ต๋๋ค.
ํํ ๋ฆฌ์ผ ์ฌ์์ ํ๋ ์ด์ด์๊ฒ ์กฐ์๋ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํด ์์๋ฅผ ๋ฐฐ์น, ์์ดํ ์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํฌํ์ ํ๊ณ 1์คํ ์ด์ง๋ก ๋์ด๊ฐ์ ์์ดํ ์ ๋จน์ผ๋ ค๊ณ ์์์ ์ ์ด, ์์ดํ ์ด ์์ฑ๋ ํ ์์ดํ ๊ณผ ์ ์ดํ ๊ฒฝ์ฐ
ํ๋ ์ด์ด ์ธ๋ฒคํ ๋ฆฌ ์คํฌ๋ฆฝํธ์๋ ์ ์ดํ ์์ดํ ์ ์ ๋ณด๊ฐ ์ ๋ ฅ๋๊ณ , UI์๋ ์์ดํ ์ด ํ์๋ฉ๋๋ค.
ํ์ง๋ง ์ ์ดํ ๊ฒฝ์ฐ ์ฌ๋ผ์ง๋ ์์ดํ ์ด ๊ทธ๋๋ก ์กด์ฌํ๋ฉฐ
MissingReferenceException: The object of type 'Image' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฌ์ด ๋ฐ๋๊ณ ๋์ ๋๋ ๊ธฐ๋ฅ์ด ์๋๊ธฐ๋ ํ๋์ง ... ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์ฒ์์ด๋ผ ๋นํฉ์ค๋ฝ์ต๋๋ค..
์ ๊ฑฐ ๋ณดํต foreach๋ก ๊ฒ์ฌํ๋ค ๋ฆฌ์คํธ ์์ ์๋๊ฑฐ ์ญ์ ํด์ ๋ฐ์ํ๋๋ฐ. ์๋์ ํ์ง์์? ๊ฑฐ์ฌ๋ฆฌ๋ฉด, for(int List.Count-1;i>=0;i--)๋ก ๊ฑฐ๊พธ๋ก ํ๋ฉด ํด๊ฒฐ๋ ๋ฏ
์๋๊ฐ ๋ค๋ฅธ๊ฑด๊ฐ?
์์ดํ ์ ์ฌ์ฉํ ๋ ๋ฆฌ์คํธ๋ฅผ ๋น์ฐ๊ธดํ๋๋ฐ ๊ทธ๋ฅ ์ ์ดํ ๋ ์ธ๋ฒคํ ๋ฆฌ์ ๋ค์ด์ค์ง๋ง? ๋์คํธ๋ก์ด๊ฐ ์๋์ ์ํด์
์ดํํธ๋ ์๋ฆฌ๋ ๋์ค๋๋ฐ ์ด์์ฆ๊ฐ, ๋ฌด์ ๋ฑ์ ๊ธฐ๋ฅ์ด ์๋๋ค์ ใ ใ
destroyํ๊ฒ ์์ดํ ์ค๋ธ์ ํธ์ธ๋ฐ, ํ๋ ์ด์ด๋ ์ ์ดํ๋ฉด ์ธ๋ฒคํ ๋ฆฌ๋ก ๊ฐ์ ์ด๋์ํค๊ณ ์์ดํ ์ ์ฌ๋ผ์ ธ์ผํ๋๋ฐ ์์ฌ๋ผ์ ธ์ image๋ก ๋จ๋๊ฑด ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ค์... ์คํ๋ผ์ดํธ๋ผ์ ๊ทธ๋ฐ๊ฑด์ง
ํน์ image.gameObject๋ฅผ ์ญ์ ํด์ผํ๋ ์ํฉ์ image๋ง ์ญ์ ํ๋ค๊ฑฐ๋ ๊ทธ๋ฐ๊ฑด ์๋?
Destroy(gameObject)๋ฅผ ์ฐ๋๊ฑฐ๋ผ ๊ฒ์์ค๋ธ์ ํธ๋ฅผ ์์ค๊ฑฐ๊ฐ์์ ใ ใ
์ด ์ด์์ ๋ชจ๋ฅด๊ฒ์. ์ฝ๋๋ฅผ ๋ด์ผ ์๊ฒ๊ฐ์๋ฐ
๋ฐ์ ์งง์ ์ฝ๋๊ฐ ์์ต๋๋ค!
๊ทธ ์ฌ์ ๋ฐ๊ฟจ๋ค๋๊ฒ ๋ฌด์จ์ํฉ์? ๋ค๋ฅธ ์ฌ์์ ๋ฌธ์ ์ ์ฌ์ผ๋ก ๊ฐ ๋ค์ ์์ดํ ์ ๋จน์ผ๋ฉด ์ ์๋ํ๋ ์ฝ๋๊ฐ ๋ณธ๋ฌธ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ฐ์ํ๋ค๋๊ฑฐ์?
๋ค 1๋ฒ ์ฌ์์ ์์ดํ ์ ์ด ์ ์์ดํ ์ด ์ฌ๋ผ์ง๋ฉฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ๋ค์ด ํ๋ ์ด์ด์ ์ธ๋ฒคํ ๋ฆฌ ์คํฌ๋ฆฝํธ๋ก ์ ์ ๋ฌ์ด ๋๋๋ฐ
๊ทธ๋ผ ์ฑ๊ธํค์ผ๋ก ๋ค๋ฅธ ์ฌ์์ ๊ฐ์ ธ์ค๋ฉด์ ๊ธฐ์กด ์ฌ์์ ํ๊ดด๋ ๊ฒ์์ค๋ธ์ ํธ์ ์ฐ๊ฒฐ๋ ๋ถ๋ถ์๋ ์ฒดํฌํด์ค์ผํ ๊ฒ ๊ฐ์๋ฐ
2๋ฒ ์ฌ์ผ๋ก ์ด๋ํ ํ ๋๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํ ์คํ ํ ๊ฒฝ์ฐ์๋ ๋ณธ๋ฌธ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์
์ด์ ๋ต์ ๋๋ฒ๊ทธ๋ชจ๋ ๋ฟ์ด์ผ..! ํ์ดํ
์์ดํ ์ ์ฌ์ฉํ ๋ ๋ฆฌ์คํธ๋ฅผ ๋น์ฐ๊ธดํ๋๋ฐ ๊ทธ๋ฅ ์ ์ดํ ๋ ์ธ๋ฒคํ ๋ฆฌ์ ๋ค์ด์ค์ง๋ง? ๋์คํธ๋ก์ด๊ฐ ์๋์ ์ํด์
์ค๋ฅ ์์ฒด๋ Image๋ผ๋ ์ค๋ธ์ ํธ๊ฐ ์๋๋ฐ ๊ณ์ ์ก์ธ์ค๋ฅผ ์๋ํ๋ค๋ ๊ฑฐ๋ค. ๋น์ฃผ์ผ ์คํ๋์ค๋ ์ ๋ํฐ๋ ์ฐ๊ฒฐํด์ ๋๋ฒ๊ทธ ํ๋ํ๋ ์ฐ์ด๋ณด๋๊ฒ ๊ฐ์ฅ ๋น ๋ฅธ ํด๊ฒฐ์ฑ ์ด์ผ ์น๊ตฌ. ๊ทธ๋ ๊ฒ ํด์ ์ด๋ ์์ ์์ Image๊ฐ ์์ด์ง๋์ง ํ์ ํ๊ณ ์๋ชป๋ ๋ถ๋ถ์ด ์๋์ง ์ฐพ๋ ์๋ฐ์ ์์ด๋ณด์ฌ
์ ์ฒด ์ฝ๋๋ฅผ ๋ณผ ์ ์์ผ๋.. ์ด๋ฐ ๋ต๋ณ๋ฐ์ ๋ชป์ฃผ๊ฒ ๋ค
์... ํ๋ฒ ์๋ํด๋ณด๊ฒ ์ต๋๋ค ใ ใ ์๊น ๋๋ฒ๊ทธ ์ฐ์ด๋ดค์๋๋ image ์ค๋ธ์ ํธ๊ฐ ์์ฌ๋ผ์ง๋๋ผ๊ณ ์ ใ
๋๋์์ดํ ์ ์ด ์ ๋ฐ์ํ๋ ์ฝ๋๋private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")) { if (Inventory.instance.items.Count < 1) { Inventory.instance.AddItem(GetItem()); Destroy(gameObject); } else { return; } } }
์ด๊ฒ์ธ๋ฐ ์ฌ๊ธฐ์ ์ด๋ฏธ์ง ์ค๋ธ์ ํธ๋ฅผ ์์ ๋๊ฒ ์ ํ ์์ด๋ณด์ฌ์์ ใ
F9๋ฅผ ์์ ์ด ๋ ํธ์ถ๋๋ ๋ฉ์๋์ ์ฐ๊ณ F10์ผ๋ก ์ฐฌ์ฐฌํ ์ฐพ์๋ด. ๋ง์ฐ์ค ์ค๋ฒ ํด๋ณด๋ฉด์. ๋ด ์๊ฐ์ ์๋ง Image ์ค๋ธ์ ํธ๊ฐ ์ด๋ฏธ null์ผ ํ๋ฅ ์ด ๋์ ๋ณด์ฌ
๋ต ํด๋ณด๊ฒ ์ต๋๋ค..!
์ ์ด๋ฐ ์ฝ๋๊ตฌ์กฐ๋ฉด ์ด๋ฏธ ๋ถ์ด์ ธ์ ์๋ ์ค๋ธ์ ํธ๋ฅผ ๋ ๋ถ์๋ ค๊ณ ํด์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์๋ฐ?
๋ค.. ์ ๋ ๊ทธ๋ ๊ฒ ์๊ฐ์ค์ธ๋ฐ ์ด๊ฒ ใ ใ ใ ์ ๋๋ ์ฝ๋๊ฐ ์ฌ์ด ๋ฐ๋์๋ค๊ณ ์๋๋๊ฑด์ง๋ฅผ ๋ชจ๋ฅด๊ฒ ์ด์
๋๋ ๋น์ทํ๊ฒฝํ์๋๋ฐ ๋ด ๊ฒฝ์ฐ์๋ ui๋งค๋์ ๊ฐ DontDestroyOnLoad๋ก ๋์ด ์๊ณ 1๋ฒ ์ฌ์์ ui์์ฑํ๊ณ ๊ทธ ์ฐธ์กฐ๋ฅผ ๋ค๊ณ ์๊ฒ ํ๋๋ฐ ์ฌ ๋์ด๊ฐ๋ฉด์ ๊ทธ ui Object๊ฐ ์ญ์ ๋์๊ธด ํ๋๋ฐ ui๋งค๋์ ์์ ์ฒ๋ฆฌ๋ฅผ ์ํด์ค์ ์ญ์ ๋ ui์ ์ฐธ์กฐ๋ ๊ณ์ ๋ค๊ณ ์์ด์ ๋์ค์ ์ด ui๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ๋ค๊ฐ ๋๊ฐ์ ์ค๋ฅ๋ด์ ๊ด๊ฑด์ OnDestroyOnLoad์ ์๋ ๋งค๋์ ๋ฅ๊ฐ ์ง๊ธ ์ฌ์ ์๋ ์ฐธ์กฐ๊ฐ ์์๊ฒฝ์ฐ ๋ํ๋ฌ๋ค๋๊ฑฐ๊ณ ๋ฐ๋ผ์ ์ฌ ๋์ด๊ฐ๋ Clearํด์ผํ ๋งค๋์ ๊ฐ ์์ผ๋ฉด Clearํด์ค์ผ ํ๋ค๋๊ฑฐ
ํ๋ฒ ํ์ธํด๋ณด๊ฒ ์ต๋