์ ์ด ์์ง์ด๋๊ฑฐ๋ฅผ Coroutine์ผ๋ก ์งฐ๊ฑฐ๋ ?
์ ์ด ์ฃฝ์๋ GameObject๋ฅผ Destroyํ๋ฉด ๊ฑฐ๊ธฐ์ ๋ถ์ด์๋ Component ์ ๋ถ ํ๊ดด๋๊ณ , ๊ทธ ์์ ์๋ Coroutine๋ ์์์ ํ๊ดด๋์ผ ํ๋๊ฑฐ ์๋?
์ MissingReferenceException ์๋ฌ๊ฐ ํ๊ดด๋์ด์ผ ํ๋ Component์์ ๋์ค๋ ๊ฑด์ง ์ดํด๋ฅผ ํ ์๊ฐ ์์
๋ด๊ฐ Coroutine์ด๋ Destroy๋ฅผ ์๋ชป ์ดํดํ๊ณ ์๋?
์์๊ฐ์๊ฒ ์๋ชป๋๊ฒ ์ง
๋๋ ์ด๊ฑฐ ์๋ ์ ํ๋ฒ ๊ฒช์์๋๋ฐ ์ฝ๋ฃจํด ์คํํ๋ ์ฃผ์ฒด๋ ๊ทธ ์คํฌ๋ฆฝํธ๊ฐ ๋ฌ๋ฆฐ ์ค๋ธ์ ํธ์. ๊ทธ ์ค๋ธ์ ํธ๋ฅผ disableํ๊ฑฐ๋ destroy ํ๋ฉด ์ฝ๋ฃจํด๋ ์๋์ผ๋ก ๋ฉ์ถ๊ฑฐ๋ผ ์๊ฐํ์ง๋ง ์๋ฌ ๋จ. ๊ฒฐ๊ตญ ๊ทธ ์ค๋ธ์ ํธ ํ๊ดดํ๋ ์ฝ๋ ๋ฐ๋ก ์ ์ค์ StopCoroutine ์ง์ ๋ฃ์ด์ค์ ํด๊ฒฐํจ
์ด์จ๋ ์ฝ๋ฃจํด์ ์ฐ๋ ๋๋ ์๋๊ณ ์ผ์ข ์ ์ปดํฌ๋ํธ๊ฐ์๊ฑฐ๋ผ๊ณ ๋ด์ผ๋จ. ์ค๋ธ์ ํธ๊ฐ ์์ด์ก์ผ๋ ์ฝ๋ฃจํด ์ปดํฌ๋ํธ์์ ๋ ํผ๋ฐ์ค ์ค๋ฅ ๋จ๋๊ฒ ๋ง์ง
StartCoroutine() ์ ์คํํ ๊ณณ์ด ์ฝ๋ฃจํด์ ๊ฐ์ง๊ณ ์์. ์ ๊ฑฐ์์ฒด๊ฐ ํ์์ด ์ฝ๋ฃจํด์ด๋ผ ์ํผ StartCoroutine์ ๋์คํธ๋ก์ด ๋ ๊ฐ์ฒด์์ํด๋ด
๊ทธ๋ฆฌ๊ณ ์ค๋ธ์ ํธ ํ๊ดด์ํจ๋ค๊ณ ํด์ ๊ฑ๊ฐ ๋ฌผ๊ณ ์๋ ๋ ํผ๋ฐ์ค๋ค ์ ๋ถ ํ๊ดดํ๊ฑฐ๋ ํด์ ํด์ฃผ์ง ์์. void OnDestroy()์ ์๋์ผ๋ก ๊ทธ ์ค๋ธ์ ํธ๊ฐ ๋ฌผ๊ณ ์๋ ๋ ํผ๋ฐ์ค๋ค = null ์ด๊ธฐํํ๋ ์ฝ๋๋ค ๋ฃ๋๊ฒ ์์ ํจ