Unity로 UI 시스템을 짜다보면 virtual이랑 abstract를 동시에 사용하는 경우가 있다.
실제 Unity 코드에서 상속을 활용해 UI를 구성할 때 이 두 가지가 어떤 역할을 하고 왜 사용하는지 한번 정리해보자.
public abstract class BaseUI : MonoBehaviour
{
protected UIManager uiManager;
public virtual void Init(UIManager uiManager)
{
this.uiManager = uiManager;
}
protected abstract UIState GetUIState();
public void SetActive(UIState state)
{
gameObject.SetActive(GetUIState() == state);
}
}
public class HomeUI : BaseUI
{
protected override UIState GetUIState()
{
return UIState.Home;
}
public override void Init(UIManager uiManager)
{
base.Init(uiManager);
}
}
Unity에서 상속을 잘쓰면 확장성과, 유지보수성이 뛰어난 구조가 될 거 같다.