안녕하세요 연꿈술사 입니다.
오늘은 유니티 C#에서의 접근제한자에 대해 알아보겠습니다.
기본적으로 사용하는 접근제한자는 public, private, internal, protected 가 있습니다.
public의 경우에는 모든 클래스 및 외부에서 접근 가능한 접근제한자로, 우리가 이 접근제한자를 사용하여
다른 오브젝트의 컴포넌트로 부착 시 인스펙터 창에 보여지게 할 수 있습니다.
플레이어의 이동속도를 public float speed = 5f; 라고 가정한 뒤 플레이어 오브젝트의 컴포넌트로 부착을 했다고
합시다. 그럼 인스펙터 창에서도 speed에 접근하여 수치를 바꿀 수 있게 해줍니다.
게임의 밸런스를 맞추어가는 과정에서 빠르게 수치를 변화하여 확인할 때 사용하기도 합니다. 또한 메서드를
public으로 선언하여 외부 클래스 등에서 접근하기 쉽게 사용하기도 합니다.
private의 경우는 클래스 내부에서만 사용할 수 있도록 접근을 제한하는데요, 우리가 보통 접근제한자를 생략하고
쓰는 경우가 많은데 이 경우에 접근제한자는 private이 기본값이 됩니다. 외부에 노출이 되지 않기 때문에 타 클래스에서
수정이 불가능해 유지보수에도 좋습니다.
internal은 같은 namespace에서만 공유가 가능하도록 하는 접근제한자입니다.
protected접근제한자는 '상속'에 대한 개념을 알고 계시면 이해가 편하실텐데요, 객체지향언어인 C#에서는 부모와 자식
클래스를 만들어 상속을 통해 클래스가 가진 것을 물려받을 수 있게 합니다. 기본적으로 우리가 C# Script를 생성하여 열면
public class Test : Monobehaviour 로 유니티에서 제공하는 Monobehaviour 클래스를 상속받는다는 것을 알 수 있습니다.
이처럼 protected는 부모인 자신과 그 자식만 사용할 수 있도록 만든 접근제한자입니다.
여기서 public 접근제한자는 외부에서 접근이 쉽고 변수의 경우에는 inspector창에서도 수정이 가능했습니다. 하지만 이런
무분별한 수정과 타클래스에서 가져다쓰는 등 하게되면 결함이 생겼을 시 유지보수가 매우 불편할 것입니다. 그래서 inspector창에 노출을 통해 수치를 수정할 수는 있지만 타클래스에서는 접근하지 못하게 private을 접근제한자로 두는 기능이 있습니다. 이것이 바로 SerializeField 입니다.
사용시
[ SerializeField] private float speed = 5f; |
이런 식으로 사용할 수 있습니다. 이렇게 사용하면 unity 게임을 실행한 후 수치를 바꿔가며 밸런스 조절을 하고, 외부 클래스 등에서는 접근하지 못하게 해 유지보수를 편하게 할 수 있습니다.
오늘은 접근제한자들과 SerializeField 기능에 대해 알아보았습니다.
감사합니다. 연꿈술사였습니다.
'Unity 3D' 카테고리의 다른 글
Unity 3D 엔진 기초 (6) Clamp를 통한 이동 제한 (0) | 2023.08.08 |
---|---|
Unity 3D 엔진 기초 (5) Transform (0) | 2023.08.07 |
Unity 3D 엔진 기초 (3) deltaTime, 플레이어 이동 구현 (0) | 2023.08.05 |
Unity 3D 엔진 기초 (2) LifeCycle (0) | 2023.08.04 |
Unity C# 문법 (6) Vector (0) | 2023.08.03 |
댓글