์กํฐ๊ฐ Destroy ๋ ๋ ํด๋น ์กํฐ๊ฐ Owner์ธ ์ปดํฌ๋ํธ๊ฐ GC์ ์ํด ์ฃฝ๋๋ฐ ์ด๊ฑธ ์ด๋ป๊ฒ ๋ง์ ์ ์์๊น
์ค๋์ค ์ปดํฌ๋ํธ๋ผ์ ์กํฐ ์ฃฝ๋๋ค๊ณ ๋ฐ๋ผ์ ์ฃฝ์ผ๋ฉด ์๋๋ ์ํฉ์ธ๋ฐ TStrongObjectPtr๋ก ๋ค๊ณ ์์ด๋ ์๋จ
UPROPERY ์์ด ํด์ผํ๋๋ฐ ์ด์ผํด์ผํ ๊น
์ค๋์ค ์ปดํฌ๋ํธ๋ผ์ ์กํฐ ์ฃฝ๋๋ค๊ณ ๋ฐ๋ผ์ ์ฃฝ์ผ๋ฉด ์๋๋ ์ํฉ์ธ๋ฐ TStrongObjectPtr๋ก ๋ค๊ณ ์์ด๋ ์๋จ
UPROPERY ์์ด ํด์ผํ๋๋ฐ ์ด์ผํด์ผํ ๊น
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ทผ๋ฐ ๊ฒฐ๊ตญ owner ์๋ ์ปดํฌ๋ํธ ์๋๋ฉด ์๋ ์ปดํฌ๋ํธ ๋ ๊ฐ ๋ฐ์ ์ ํ์ง๊ฐ ์์ Owner ์์ผ๋ฉด ๊ด๋ฆฌ๊ฐ ๋๊ธด ํ๋๋ฐ Concurrency Owner๊ธฐ์ค์ผ๋ก ๋ชป์ฐ์์
๋ฃจํธ์ ์ ์ง์ด๋ฃ์ผ๋ฉด MarkAsGarbage ํจ์์์ check(!IsRooted); ๊ณ์ ์ค๋จ์ ์ฐํ์ ์กฐ๊ธ ๊ทธ๋ผ
์ฌ์ด๋ ์ฌ์์ด ๋๋ ๋๊น์ง ์ค๋๋ฅผ Destroy์ํค์ง ๋ง.
๊ทธ๋ ๊ฒ ํ๊ธฐ์ ๋๋ฌด ๋ฉ๋ฆฌ๊น์ง ์๋ฒ๋ ธ์ด
๊ทธ๋ฌ๋ฉด ์กํฐ์์ ๋ผ์ ๋ ๋ฒจ์ ๋ถ์ฌ
์กํฐ OnDestroy ๋ธ๋ฆฌ๊ฒ์ดํธ์ ๋ฐ์ธ๋ฉํ๊ณ ๊ฑฐ๊ธฐ์ ํ๋ฉด ๋ ๊ฒ ๊ฐ๊ธดํ๋ฐ ๋ฌธ์ ๋ OnDestroy๊ฐ UFUNCTION๋ง ๋ฐ์ธ๋ฉ ํ ์ ์๋๋ฐ Native C++ ํด๋์ค์์ ํด์ผํ๋ ์ํฉ์ ใ ใ UAudioComponent ์์๋ฐ์์ ๊ทธ ํด๋์ค์์ ๋ฐ์ธ๋ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๊ธฐ๋ ๋ด์ผ ํด๋ด์ผ์ง
๋ธํ์์ EventDestroyed๋ ์ด๋ฏธ ํ๊ดด ํ์ธ๊ฑด๊ฐ?
๋ธํ๋ก ํ๊ธฐ๋ ์ข ๊ทธ๋ bp๋ก ๋๋ค = C++๋ก๋ ๋๋ค๋ผ์ ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์กํฐ๊ฐ ์ฌ์ฉํ ์ ์๋๊ฑฐ๋ผ ์์ ํด์ผํ bp๋ ๋ง๊ณ
๊ทธ๋ญ ์ํด๋ด~
๊ด๋ฆฌํ๋๋ ๋ง๋ค์ด์ ๋์คํธ๋ก์ด ํธ์ถํ ๋ ๊ด๋ฆฌํ๋๋์๊ฒ ์ปดํฌ๋ํธ ์ฃผ๊ณ ์ฃฝ์ด ๊ฐ์ธ์ ์ผ๋ก ๋ฌด์กฐ๊ฑด c++ ๋ณด๋ค๋ bp๋ก ์ฑ๊ธฐ๋ ์์ฐ์ฑ์ด ๋์ข์๊ฑฐ๊ฐ์