์ฐ์ ์ฑ๊ธํค ๋งค๋์ ์คํฌ๋ฆฝํธ ManagerScript์
public Component component; ๋ณ์์ ์ธ
๊ฐ์ ธ์ค๊ณ ์ถ์ ์ปดํฌ๋ํธ MyScript์์
ManagerScript.instance.component = this;
๋ถ๋ฌ์ฌ ์คํฌ๋ฆฝํธ LoadScript์์์
MyScript myScript = ManagerScript.instance.component as MyScript;
์ด๋ฌ๋ฉด myScript๋ฅผ GetComponent ์์ฐ๊ณ ๋ถ๋ฌ์์ผ๋ ์ฑ๋ฅํฅ์!
๋ฐ๋ฐ์ ์ ์ ํ ์ด์ ๋ฅผ ์๋ ค์ฃผ์
GetComponent๊ฐ ์ด๋ค ์๋ฆฌ๋ก ์ฑ๋ฅ์ด ์์ข์๊ฑด์ง, ์ด๋ ๊ฒ ๋ถ๋ฌ์ค๋๊ฒ ๋ ๋นํจ์จ์ ์ด๋ผ๋ฉด ์ ๊ทธ๋ฐ์ง
์ง์ง ๋ชฐ๋ผ์ ๊ทธ๋ผ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ง์ ์ ๋ ๊ฒ ๊ตฌํํ์๋ ์๋ ๋๋๋ฐ ํ์ ์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์?
ํ๋ง์ํ ๊ฒ์ ์ ์์ค์ด๊ณ ํ๋ง, ์์ดํ , ์ ๊ธฐ์ฒด ๋ฑ๋ฑ ์ฌ๋ฌ ์ข ๋ฅ์ ํ๋ฆฌํน์ ์ค๋ธ์ ํธํ๋ง์ผ๋ก ๊ตฌํํ๋๊ฑด ํ๋๋ฐ ์ ์ ๊ทธ ํ๋ฆฌํน์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊พธ๋ ค๊ณ ์คํฌ๋ฆฝํธ์ ์ ๊ทผํ๋ ค๋ฉด ํ๋ง์์ฑ๋ง๋ค GetComponent๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๊ฒ๋ผ์ ๋งค๋์ ์์ ์ค๋ธ์ ํธ๋ค์ ๋์ํ๋ ์ปดํฌ๋ํธQueue๋ฅผ ์บ์ฑํด๋์ผ๋ ค๋ ์๋์์. ๊ทธ๋์ ์ฝ๋ ๋์ ๊ฑฐ๋ฆฌ๋ค๊ฐ ์ ๋ฐ์์ผ๋ก ์จ๋ดค๋๋ฐ GetComponent์์ด ์ปดํฌ๋ํธ๊ฐ ๋ถ๋ฌ์์ง๋๊ฑธ ๋ณด๊ณ GetComponent์ ์ ๋ฐฉ์์ ์ด๋ค ์ฑ๋ฅ์ฐจ์ด๊ฐ ์๋์ง ์ง๋ฌธํ๋ ค๋๊ฑฐ์์ต๋๋ค
์ ๋นํจ์จ์ ์ด๋๋ฉด.. ๋๋ฌด๊ธธ์ด์..
0.01fps์ ์ํฅ๋ ์์ฃผ๋ ์ฑ๋ฅํฅ์์ ๊ฐ๋ ์ฑ์ ์กฐ์ง์ง ๋ง์
ํ๋ง์ ์ฐ์ด๋ GetComponent๋ ๊ฑ ๋ฌด์ํ๊ณ ์จ๋๋จ? ๊ทธ๋ด๊ฑฐ๋ฉด ์ค๋ธ์ ํธํ๋ง๋ ์ํ๊ณ ๊ฑ Instantiate, Destroy ์จ๋๋๋๊ฑฐ์๋?
ใด ๋๊ฐ ๊ทธ๋ ๊ฒ ์๊ฐํ๋ฉด ๊ทธ๋ฅ ์ฐ๋ฉด๋๋๊ฑฐ์๋? ์ ์ค๋ํ๋ คํ๋ ธ
์ผ๋จ ๊ทธ๋ฅ ํด๋ด. ๊ทธ๋ผ ๋ต์ ์๊ฒ ๋ ํ ๋.. ์๋ฌด๋ฆฌ ์ฌ๊ธฐ์ ์๋ ค์ค๋ ์ดํด๋ชปํ๋ค
Instantiate, Destroy๋ ํ๋ ์์ํฅ ํฌ๊ฒ ์ค๋ค..๋ญ๊ฐ ๋ฌด๊ฑฐ์ด์ง๋ ์๊ณ ์ต์ ํ๋ฅผ ํด์ผ์ง ์๊ทธ๋ฌ๋ฉด ์ง๊ธ์ฒ๋ผ ์๋ณตํ๋ค๊ฐ ์ง ๋ค๋น ์ง๋๊ฒจ
์ต์ ํ๋ฅผ ๊ผญ ํด์ผ๊ฒ ๋ค ๊ทธ๋ฐ๊ฑด ์๋์๊ณ GetComponent์์ด ๋๋๊ฒ ์ ๊ธฐํด์ ๊ทธ๋ฅ ํ๋ฌธ์ ํธ๊ธฐ์ฌ์ ๊ธ์ด๊ฑฐ์ผ ใ ใ
premature optimization is root of all evil
๊ทธ๋ฅ ๋ณ์๋ก ๋ง๋ค์ด์ ์ธ์คํํฐ์์ ๋ฃ์ด๋๋ค์ ์ฐ๋ฉด ๋์๋? ์ค์ผ ๋ณต์กํ๊ฒํจใ ใ GetComponent๋ ๊ทธ๋ฅ ํธํด์ ์ฐ๋๊ฑฐ๊ณ ~
์ด๋ก ์ ํผํฌ๋จผ์ค์ ์ธ๊ฑด ๋์์ง ์๋๊ฒ ๊ฐ์๋ฐ ํ๋ฆ์ ์ดํ๊ธฐ ์ฝ์ง ์์๋ฏ
๊ทธ๋ฅ ์ธ์คํด์์์ดํธ ํ๋ ํ๋ฆฌํน์ MyScript ํ์ ์ผ๋ก ์ ์ธํด๋๊ณ ์ธ์คํํฐ์ฐฝ์์ ๋ฑ๋กํด์ ์ฐ๋ฉด์๋?
์ด๋ ํ๋ ๊ผฌ์ด๊ธฐ ์์ํ๋ฉด ๋๋ฒ๊น ํ๋๊ฑฐ ์ฝ์ง์์๋ฏ ์ํด๋ณด์