Unity3D

유니티 Awake Start Update 상속 후 부모 함수 호출 방법

DragonTory 2021. 2. 23. 10:13
반응형

유니티 Awake Start Updat 상속 해서 부모 함수까지 호출 하기

유니티에서 MonoBehaviour를 상속 해서

최종 자식의 Awake가 호출 될 때 부모의 Awake도 같이

호출 되게 할 일이 있는데

다음과 같이 하면 Child.Awake만 호출 되고

Parent.Awake는 호출 되지 않는다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Parent : MonoBehaviour
{
    void Awake()
    {
        print("Awake : Parent");
    }
}
 
public class Child : Parent
{
    void Awake()
    {
 
        print("Awake : Child");
    }
}

 

Child.Awake를 호출 할때 상속받은 Parent.Awake도

호출 되게 하려면

다음과 같이 virtual / override와 키워드를 사용 해서

가상함수로 만들어 사용 해야 한다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Parent : MonoBehaviour
{
    protected virtual void Awake()
    {
        print("Awake : Parent");
    }
}
 
public class Child : Parent
{
    protected override void Awake()
    {        
        base.Awake();
 
        print("Awake : Child");
    }
}

 

Parent의 Awake에 virtual를 사용 하여

자식에서 오버라이딩 해서 사용 할 수 있게 만든 다음 

Child에서 Awake를 override 하여 정의 해주고

함수 내부에서 base.Awake를 호출 하여

Parent.Awake가 실행 되게 하면 된다. 

여기서 base.는 상속받은 부모를 가르킨다.

 

반응형