๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

 

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 :  ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด ๋˜๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers

 

  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋””ํดํŠธ ํ•œ์ •์ž๋Š” internal
    • ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉค๋ฒ„๋Š” public์ด ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค.
    • enum์˜ ๋ฉค๋ฒ„๋Š” ํ•ญ์ƒ public์ด๋ฉฐ, ์–ด๋–ค ์ ‘๊ทผ ํ•œ์ •์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ๋””ํดํŠธ ํ•œ์ •์ž๋Š” private
  • ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋Š” ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ง์ ‘ ์„ ์–ธ ์‹œ์—” internal, ๊ทธ ์•ˆ์— ์žˆ๋Š” ํด๋ž˜์Šค ๊ฐ™์€ ๊ณณ์— ์„ ์–ธ๋  ์‹œ์—๋Š” private
  • ์ž์‹ ํด๋ž˜์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ณด๋‹ค ๋†’์€ ์ˆ˜์ค€์˜ ์ ‘๊ทผ ์ œํ•œ์„ ๊ฑธ ์ˆ˜ ์—†๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, internal๋กœ ์„ ์–ธํ•œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ž์‹ ํด๋ž˜์Šค๋Š” public์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์—†์Œ

 

 

Unity์˜ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ๋ณ€์ˆ˜ ๊ฐ’ ํ™•์ธํ•˜๊ธฐ

 

  • Unity์—์„œ๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ public์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค์„ ์ธ์ŠคํŽ™ํ„ฐ ์ฐฝ์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ฐ’ ๋ณ€๊ฒฝ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋”ฐ๋ผ์„œ, ๋””๋ฒ„๊น…ํ•  ๋•Œ ๊ต‰์žฅํžˆ ์œ ์šฉํ•˜๋‹ค.
  • ํ•˜์ง€๋งŒ ๊ทธ ์™ธ ๋‚˜๋จธ์ง€ private, protected ๋“ฑ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ธ์ŠคํŽ™ํ„ฐ์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

public ๋ฉค๋ฒ„๋งŒ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

์ด๋Ÿฐ ์ œํ•œ๋œ ๋ณ€์ˆ˜๋“ค์„ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

 

Unity ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ํ™œ์šฉํ•˜๊ธฐ

 

์ธ์ŠคํŽ™ํ„ฐ์—์„œ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝ์„ ํ•˜๋ฉด ์ˆจ๊ฒจ์ง„ ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋“ค๊นŒ์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ, ์ˆ˜์ •์€ ์•ˆ ๋œ๋‹ค.

 

๋””๋ฒ„๊ทธ ๋ชจ๋“œ ์ ์šฉ ์ „
๋””๋ฒ„๊ทธ ๋ชจ๋“œ ์ ์šฉ ํ›„

 

 

[SerializeField] ์• ํŠธ๋ฆฌ๋ทฐํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

 

[SerializeField] ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด private, protected ๋ฉค๋ฒ„๋„ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ ‘๊ทผ ํ•œ์ •์ž์˜ ํšจ๋ ฅ๋„ ์œ ์ง€๋˜๊ณ , ์ธ์ŠคํŽ™ํ„ฐ์—์„œ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐฉ๋ฒ•์„ ์ถ”์ฒœํ•œ๋‹ค.

public class Test : MonoBehaviour
{
    [SerializeField]
    private float privateVar;

    [SerializeField]
    protected float protectedVar;
}

 

 

์• ํŠธ๋ฆฌ๋ทฐํŠธ์— ๋Œ€ํ•œ ๊ณต๋ถ€๋ฅผ ์•„์ง ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๊ฒƒ์ด ์žˆ๊ตฌ๋‚˜๋ž€ ๊ฒƒ๋งŒ ์•Œ์•„๋’€๋‹ค.

๋‚˜์ค‘์— ๊ณต๋ถ€ํ•ด๋ด์•ผ์ง€!

 

 

728x90
๋ฐ˜์‘ํ˜•