게임 개발/C#
유니티 C# override, virtual
UniCoti(유니코티)
2022. 11. 21. 03:23
반응형
유니티 공부를 조금 해본 사람이라면,
서적이나 다른 사람이 만든 코드에서
이러한 새로운 개념을 보았을 것이다.
이 개념들은 생각보다 쉽다.
간단히 말하자면,
override는 이 함수를 고치겠다.이고,
virtual은 이 함수를 고쳐도 된다는 허락이다.
표기\의미 | 뜻 |
Override | 함수를 고치는 걸 통보 |
Virtual | 함수를 고치는걸 허락 |
유니티는 클래스 개념이 존재하는 만큼,
상속 등 함수를 공유할 수 있는 경우가 많은데,
그럴 때 쓰는 함수들이다.
예제를 보여주자면
public virtual void OnPointerUp(PointerEventData eventData)
{
input = Vector2.zero;
handle.anchoredPosition = Vector2.zero;
}
//이 클래스 이름은 Joystick 이다.
가장 상위 클래스(조이스틱)의 손을 떼었을 때 코드이다.
virtual이 이 함수를 고쳐도 된다고 허락하고 있다.
public override void OnPointerUp(PointerEventData eventData)
{
background.gameObject.SetActive(false);
base.OnPointerUp(eventData);
}
//이 클래스의 이름은 FloatingJoystick이다. Joystick 클래스를 상속받음.
이건 위의 Joystick클래스를 상속한 FloatingJoystick 스크립트이다.
위의 함수를 보면 virtual에서 override로 바뀐 것을 알 수 있다.
위에서 설명했듯이, 상위 클래스에서 이 함수를 고쳐도 된다고 허용했기에,
하위 클래스에서 override로 고치겠다고 말한 거와 같다.
여기서 주의해야 할 것이 있는데,
override를 써서 함수를 새로 만들었다면,
원래의 기능은 모두 사라진다.
그래서 override를 사용한 함수에 한하여
base라는 키워드를 제공한다.
base. 상위 클래스 함수명 이렇게 입력하면 상위 클래스에서
만들어놓았던 함수가 복사된다.
위 코드를 보면 base를 이용해서 원래의 기능도 포함시킨 걸 볼 수 있다.
이 정도만 알아두면 될 거라고 생각하며,
이만 글을 마치겠다.
도움이 되었길 바라며,
끝.
반응형