1. 문제 상황
inputDir 값을 참조해야되는 상황에서 Controller.inputDir을 직접 참조하는 방식과, 매서드를 통해 inputDir을 받아오는 방법 중 어떤 것이 더 적절한지 고민이 생겼다.
그 과정에서 getter와 반환 메서드의 차이가 어떤것이 있을까라는 궁금증이 생겼다.
2. 원리 및 개념 정리
Getter
- 보통 프로퍼티에서 Get만 열어두어 외부에서 접근하여 값을 읽을 수 있지만, 수정은 할 수 없음.
- 속성처럼 사용 가능해서 직관적인 코드 작성이 가능.
- 캐싱된 값이나 계산된 값을 반환할 수 있음.
public class MoveState
{
public Vector3 moveDir;
public void InpuDirNormal()
{
moveDir = Controller.InputDir.Normalized;
}
}
반환 메서드
- GetInputDir()처럼 메서드 형태로 값을 반환함.
- 리턴 시점에 추가 로직이나 조건 처리를 더 자유롭게 넣을 수 있음.
- 보통 값의 가공, 연산, 조건 분기 등이 필요한 경우 주로 사용.
public Vector3 GetInputDir()
{
// 추가 로직 후 값 반환 가능
vector3 dirNoraml = owner.Controller.inputDir.normalized;
return dirNormal;
}
3. 실제 적용 및 선택 기준
- Getter를 사용할 때: 단순한 값 반환 또는 연산이 거의 없는 참조성 접근 (예: 속성처럼 사용).
- 메서드를 사용할 때: 반환 전에 추가적인 처리가 필요한 경우, 의미를 분명히 하고 싶을 때.
예를 들어, inputDir이 그냥 컨트롤러의 방향 벡터라면 Getter로 충분하지만, normalized, ClampMagnitude, 조건 분기 등을 동반한다면 메서드로 구현하는 편이 좋다.
4. 개인적인 생각
처음엔 게터와 메서드가 단순히 "형태"만 다른 줄 알았는데, 사용 목적에 따라 데이터의 추가 가공 유무에 따라 구분해서 쓰이면 좋다고 느겼다.
앞으로는 단순 값 접근은 getter, 처리 로직이 있는 경우는 메서드로 구분해서 설계해 봐야겠다.
'Unity > 기능' 카테고리의 다른 글
| [Unity] eulerAngles와 rotation 차이점 (0) | 2025.05.28 |
|---|---|
| [Unity] Rigidbody의 velocity와 AddForce 차이점 (0) | 2025.05.27 |
| [Unity] NavMesh - SamplePosition (0) | 2025.05.23 |
| [Unity] 유니티 오브젝트의 법선백터 계산 기준 (0) | 2025.05.22 |
| [Unity] 2D 게임에서 카메라 영역 제한하기 (2) | 2025.05.19 |