C#์ ์ ๊ทผ ํ์ ์(Access Modifier)
์ฐพ์๋ณด๋, C#์ ๋๋ต ๋ค์๊ณผ ๊ฐ์ด 6๊ฐ ์ข ๋ฅ ์ ๋์ ์ ๊ทผํ์ ์(Access Modifier)๊ฐ ์๋ ๊ฒ ๊ฐ๋ค.
public class Test : MonoBehaviour // ์ ๋ํฐ์์ ์์ฑํจ
{
public float publicVar;
private float privateVar;
protected float protectedVar;
internal float internalVar;
protected internal float ptItVar;
private protected float prprVar;
}
.NET C# ๊ฐ์ด๋ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ์ด ๋์ด ์๋ค.
์ฌ๊ธฐ์ "๋์ผํ ์ด์ ๋ธ๋ฆฌ ๋ด์ ์๋" ์ด๋ฐ ๋ฌธ์ฅ์ ๊ฐ์ ํ๋ก์ ํธ ํ์ผ ๋ด์ ์๋ค๋ผ๊ณ ์ดํดํด๋ ์ข์ ๊ฒ ๊ฐ๋ค.
/* ๋ฌผ๋ก ์ ํํ์ง ์์ง๋ง ์ดํด๋ฅผ ๋๊ธฐ ์ํด */
- public : ๋์ผํ ์ด์ ๋ธ๋ฆฌ ๋ด ๋๋ ๋ค๋ฅธ ์ด์ ๋ธ๋ฆฌ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅ
- private : ๊ฐ์ ํด๋์ค ๋๋ ๊ตฌ์กฐ์ฒด ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- protected : ๊ฐ์ ํด๋์ค ๋๋ ํด๋น ํด๋์ค์ ์์ ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- internal : ๋์ผํ ์ด์ ๋ธ๋ฆฌ ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- protected internal : ๋์ผํ ์ด์ ๋ธ๋ฆฌ ๋ด ๋๋ ๋ค๋ฅธ ์ด์ ๋ธ๋ฆฌ์์ ํด๋น ํด๋์ค์ ์์ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ
- privateprotected : ๊ฐ์ ํด๋์ค ๋ด ๋๋ ์์ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ
- ๋ค์์คํ์ด์ค ๋ด๋ถ์์ ์ ์ธ๋ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ธํฐํ์ด์ค์ ๋ํดํธ ํ์ ์๋ internal
- ์ธํฐํ์ด์ค์ ๋ฉค๋ฒ๋ public์ด ๊ธฐ๋ณธ๊ฐ์ด๋ค.
- enum์ ๋ฉค๋ฒ๋ ํญ์ public์ด๋ฉฐ, ์ด๋ค ์ ๊ทผ ํ์ ์๋ ์ฌ์ฉํ ์ ์๋ค.
- ํด๋์ค์ ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ์ ๋ํ ๋ํดํธ ํ์ ์๋ private
- ๋ธ๋ฆฌ๊ฒ์ดํธ๋ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด์ฒ๋ผ ๋์ํ๊ธฐ ๋๋ฌธ์ ๋ค์์คํ์ด์ค์์ ์ง์ ์ ์ธ ์์ internal, ๊ทธ ์์ ์๋ ํด๋์ค ๊ฐ์ ๊ณณ์ ์ ์ธ๋ ์์๋ private
- ์์ ํด๋์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ชจ ํด๋์ค๋ณด๋ค ๋์ ์์ค์ ์ ๊ทผ ์ ํ์ ๊ฑธ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, internal๋ก ์ ์ธํ ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค๋ public์ผ๋ก ์ ์ธํ ์ ์์
Unity์ ์ธ์คํํฐ์์ ๋ณ์ ๊ฐ ํ์ธํ๊ธฐ
- Unity์์๋ ํด๋์ค ๋ด๋ถ์ public์ผ๋ก ์ ์ธ๋ ๋ณ์๋ค์ ์ธ์คํํฐ ์ฐฝ์์ ํ์ธ์ด ๊ฐ๋ฅํ๋ฉฐ ๊ฐ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅํ๋ค.
- ๋ฐ๋ผ์, ๋๋ฒ๊น ํ ๋ ๊ต์ฅํ ์ ์ฉํ๋ค.
- ํ์ง๋ง ๊ทธ ์ธ ๋๋จธ์ง private, protected ๋ฑ์ผ๋ก ์ ์ธ๋ ๋ณ์๋ ์ธ์คํํฐ์ ๋ํ๋์ง ์๋๋ค.
์ด๋ฐ ์ ํ๋ ๋ณ์๋ค์ ์ธ์คํํฐ์์๋ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
Unity ๋๋ฒ๊ทธ ๋ชจ๋ ํ์ฉํ๊ธฐ
์ธ์คํํฐ์์ ๋๋ฒ๊ทธ ๋ชจ๋๋ก ๋ณ๊ฒฝ์ ํ๋ฉด ์จ๊ฒจ์ง ๋ด๋ถ ๋ณ์๋ค๊น์ง ํ์ธ์ด ๊ฐ๋ฅํ๋ค. ๋จ, ์์ ์ ์ ๋๋ค.
[SerializeField] ์ ํธ๋ฆฌ๋ทฐํธ ์ฌ์ฉํ๊ธฐ
[SerializeField] ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด private, protected ๋ฉค๋ฒ๋ ์ธ์คํํฐ์์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
์ ๊ทผ ํ์ ์์ ํจ๋ ฅ๋ ์ ์ง๋๊ณ , ์ธ์คํํฐ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ๋ฒ์ ์ถ์ฒํ๋ค.
public class Test : MonoBehaviour
{
[SerializeField]
private float privateVar;
[SerializeField]
protected float protectedVar;
}
์ ํธ๋ฆฌ๋ทฐํธ์ ๋ํ ๊ณต๋ถ๋ฅผ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๊ฒ์ด ์๊ตฌ๋๋ ๊ฒ๋ง ์์๋๋ค.
๋์ค์ ๊ณต๋ถํด๋ด์ผ์ง!