public class CharacterChild_Idle
{
Player player = null;
public void Init()
{
player = GameObject.Find("Player").GetComponent<Player>();
}
}
public class CharacterChild_Walk
{
Player player = null;
public void Init()
{
player = GameObject.Find("Player").GetComponent<Player>();
}
}
위의 코드처럼 각각 다른 상태클래스에 같은 내용이 중복되어 들어간다고 가정해보자.
새로운 상태 클래스를 정의할때마다 같은 내용을 일일이 다 넣어줘야 하고, 수정을 할때 하나씩 다 고쳐야 하므로 번거롭고 비효율적이다.
따라서 같은 내용을 가진 부분을 묶어 다른 클래스에서 정의하고, 해당 클래스를 상속받아 사용하면 사용과 수정이 용이해진다.
중복되는 부분을 빼서 따로 클래스에 넣어두었다.
public class CharacterBase
{
protected Player player = null;
public void Init()
{
player = GameObject.Find("Player").GetComponent<Player>();
}
public virtual void Sample()
{
// 자식에서 재정의 가능한 함수 (virtual)
}
}
접근한정자 protected를 사용해 상속받은 하위 클래스에서도 접근 할 수 있게 해준다.
만약 재정의가 필요한 함수가 있다면 virtual키워드를 사용해 자식에서 재정의 할 수 있게끔 해준다.
public class CharacterChild_Idle : CharacterBase
{
public override void Sample()
{
base.Sample(); // 부모의 Sample을 먼저 호출
}
}
중복되었던 코드를 부모클래스로 두고 상속받아 사용한 코드이다.
부모클래스에서 virtual키워드를 사용해 정의되었던 함수는 자식클래스에서 override키워드를 사용해 재정의할 수 있다.
'Unity' 카테고리의 다른 글
Mesh (0) | 2021.06.02 |
---|---|
애니메이션 - StateMachineBehaviour (0) | 2021.05.28 |
애니메이션 - Legacy, Generic, Humanoid (0) | 2021.05.26 |
애니메이션 (0) | 2021.05.26 |
싱글톤 (0) | 2021.05.26 |