๋ฐฉ์ด์ฝ๋ฉํ๋ ค๊ณ ์ปดํฌ๋ํธ ์ธ๋๋ง๋ค ํญ์
if(component != null)
{
}
์ด๋ฐ์์ผ๋ก ํ๋๋ฐ ์ด๊ฒ ์ฌ๊ฐ ๊ท์ฐฎ์๊ฒ ์๋๋ผ์
ReferenceEquals๋ ์ฐ๊ธด ํ์ง๋ง ์ด๊ฑด ๋ public์ด๋ serializedfield ๋ณ์์๋ค ์ธ์ ์๊ณ
๊ฑ ๋ฐ๋ก ๋ด๊ฐ ํจ์๋ฅผ ๊ตฌํํด์ผ๋๋
์ปดํฌ๋ํธ์ ์ด๋ค ํ๋กํผํฐ๋ ๋ฉ์๋ ์ธ ๋ null ์ฒดํฌ ํ์ null ์ผ ๋ ์๋ฌด๊ฒ๋ ์ํ ๊ฑฐ๋ฉด component?.property ์ด๋ฐ์์ผ๋ก ์ฐ๋๊ฑด?
๋ฐ๋๋ก ํญ์ null ์ผ ๋ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ์คํฌ๋ฆฝํธ๋ก ์ง์ ๋ถ์ฌํ๊ณ ์ถ์ผ๋ฉด component ??= gameObject.AddComponent<component>() ๋ก ๋์ฒดํฌ๋ ๋์ ์ ๋์์ ํ๊ฑฐ๋
if(!TryGetComponent<T>(out component)) { //โฆ } ์ด๊ฑด ๋ ๋ณต์กํ๋ ค๋
์ public์ด๋ serializefield๋ฅผ ์์ฐ๋ ค๋์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ ํด๋น ์ปดํฌ๋ํธ๊ฐ ๊ผญ ํ์ํ์ง๋ง ์คํฌ๋ฆฝํธ๋ด์์ ์ฐธ์กฐ๋ฅผ ์ํ ๊ฑฐ๋ฉด RequireComponent ์ ํธ๋ฆฌ๋ทฐํธ ์ฐ๊ฑฐ๋ void Reset() ์๋ค ์คํฌ๋ฆฝํธ ๋ถ์ด๊ฑฐ๋ ๋ฆฌ์ ํ ๋๋ง๋ค ์ปดํฌ๋ํธ ๋ถ๋๋ก ์ฐ๋๊ฑด ์ด๋จ๊น
ใดใด public์ด๋ serializefield๋ฅผ ์์ฐ๋ ค๋๊ฒ ์๋๋ผ ReferenceEquals๋ก null์ฒดํฌํ ๋ ํด๋น ๋ณ์๋ค์ ์ฐ๋ฉด ์ฑ๋ฅ์ ์ข์ง์๋ค๊ณ ๊ทธ๋ฌ๋๋ผ ๋๋ ๋ง์ด ์
null ์ธ์ง๋ง ์ฒดํฌํ ๊ฑฐ๋ฉด Unity.Object๋ bool ์บ์คํ ๋๋๊ฑฐ ์ด์ฉํ๋๊ฒ ๋์ ์ ์์ด
if (component = SomeComponentGetter()) { // ๊ผด๋ฆฌ๋๊ฑฐ } else { // something went wrong ! }