![](https://t1.daumcdn.net/keditor/emoticon/friends2/large/068.png)
진짜가 왔다...!
드디어 내일부터 최종 팀 프로젝트를 진행한다... 무섭구만;;;
Virtual / Override
뜬금없이 버츄얼과 오버라이드 이긴한데 뭔가 너무 쉬운걸 놓치고 있던 느낌이라 생각난김에 써야겠다.
평소에는
A 라는 클래스와
A 클래스를 상속받은 Ab 클래스가 있고
Ab 클래스가 씬에 컴포넌트로 나와있는 상태에서
A 클래스를 가져와 virtual 메서드를 호출하면
Ab 클래스가 override 하더라도
A 클래스의 virtual 메서드만 호출이 되는 줄 알았다.
그림처럼 Manager 에서 Ab 클래스를 컴포넌트를 가지고있는 ab 오브젝트에게서 A 클래스를 가져와
A.Clear() 를 하면 당연히 Ab 클래스의 override 된 Clear는 실행을 안 할거라 생각했다.
실제 예시를 들면
@Scene 오브젝트는 TestScene 클래스를 컴포넌트로 가지고있고
TestScene 클래스는 BaseScene 클래스를 상속받으며 override 된 Clear 메서드를 가지고 있다.
그리고 매니저에서 LoadScene 메서드 호출 시, 현재 씬의 BaseScene 클래스를 가져와 Clear 메서드를 호출하는데
그 부분은 TestScene 에서 Update로 처리가 가능하니 실행해보았다.
참고로 BaseScene은 Clear 메서드가 비어있다.
일단 내가 생각한 것으론 BaseScene을 가져와 Clear를 실행했으니 아무것도 출력이 안 될 것이라 생각했다.
하지만...
TestScene 클래스에서 Clear가 실행된 것으로 디버그 되었다... 이게 되리라 생각을 전혀 안 하고 있었는데
아마 다음과 같은 부분에서 헷갈렸던 것 같다.
Some 메서드에 접근 하려고하는데
A 클래스엔 없지만
Ab 클래스엔 있는 경우
이 경우와 헷갈려서 그랬던 것 같다.
'스파르타 내배캠' 카테고리의 다른 글
스파르타 내배캠 Unity 3기 - 47 (0) | 2024.03.12 |
---|---|
스파르타 내배캠 Unity 3기 - 46 (2) | 2024.03.07 |
스파르타 내배캠 Unity 3기 - 44 (4) | 2024.03.05 |
스파르타 내배캠 Unity 3기 43일차 (0) | 2024.02.27 |
스파르타 내배캠 Unity 3기 42일차 (0) | 2024.02.23 |