inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작

ObjectManager

가상함수 오버라이드 시 함수호출순서

해결된 질문

792

DSK

작성한 질문수 8

1

안녕하세요, BaseController의 Init() 함수 관련 질문드립니다. 예전 강의에 대한 질문이라 기억하실지 모르겠네요ㅠ

BaseController - CreatureController - MonsterController 상속관계가 있는 상황에서, BaseController 내 virtual Init() 가상함수를 만들고 Awake() 내부에 Init()을 호출하도록 코드를 작성하셨습니다.

이때 CreatureController와 MonsterController 모두 Init()함수를 오버라이드한 상태입니다.

이때 가상함수의 함수호출순서가 궁금해서 디버깅해봤는데, MonsterController 생성시 BaseController의 Awake()에 가장 먼저 진입하고, Init() 함수를 호출하는데, 이때 프로그램 다음 실행흐름이 BaseController내부에 virtual로 작성한 Init()함수가 아니라 MonsterController에 override한 Init()함수를 실행하는것이 이해가 안됩니다.

BaseController내부 awake()에서 Init()을 호출하면 당연히 같은 클래스인 BaseController의 Init()을 호출하고 끝내야 할것으로 예상했는데, MonsterController의 Init()을 호출한다 게 잘 납득이 안됩니다.

추가설명을 조금 해주실 수 있으실까요?

C# unity virtual

답변 1

2

Rookiss

가상함수 (virtual)는 C#, C++ 등 프로그래밍 언어 공통적인 부분이라
반드시 잘 이해를 하셔야 합니다.
이 함수들은 '원본 객체'가 어떤 타입으로 만들어졌는지에 따라
해당 객체 타입의 함수를 호출합니다.
예를 들어 Knight가 Player를 상속 받는 상태에서,
Player p = new Knight();
위와 같은 코드를 이용해 객체 원본은 Knight로 만들되, Player 타입의 변수로 관리하더라도
p.가상함수(); 를 호출하면 Knight의 함수가 호출되는 것이죠.

이 부분은 OOP에서 다형성의 가장 핵심적인 내용이니 꼭x100 이해를 하고 넘어가셔야 합니다.

Addressables로 등록한 Slice된 Sprite의 하위 Sprite 접근법에 대해 질문드립니다

0

84

1

유니티 데이터 저장객체 ScriptableObject에 대해 의견 여쭤보고 싶습니다

0

141

2

안녕하세요 선생님 공부중에 궁금한게 있어서 질문 드려요

0

65

1

상속 구조에서의 awake흐름 및 init 함수 질문있습니다

0

85

1

젬 스프라이트가 로딩되지 않습니다.

0

116

1

혹시 스프라이트 드래그 앤 드롭으로 애니메이션 생성할 때

0

122

1

init() 2번 실행? 등 스킬 마무리 강의에서 질문 있습니다.

0

168

2

Managers.Object.Player와 Mangers.Game.Player 차이

0

112

1

상업적 출시에 대한 질문입니다.

0

169

1

EquipmentData 관련해서 질문드립니다

0

116

1

Data관리 관련해서 질문드립니다.

0

169

2

MonsterControllelr 에서 State Dead 사용

0

106

1

안드로이드 빌드에서는 LoadAllAsync , LoadAsync 가 동작 하지 않고 있습니다.

0

240

2

Instantiate 관련 질문 드립니다

0

158

1

포트폴리오 문서작성에 있어서 질문드립니다.

0

593

2

UI 연동방식에 대해서 질문드립니다.

0

181

1

인디게임출시경험이 중요할까요?

1

346

1

Coroutine과 uniTask 질문드립니다.

0

240

1

ResourceManager 메서드 역할

0

221

1

스프라이트 자료

1

181

1

xml 에

0

268

2

UI 리소스 사용문의

0

269

1

폴더 이름 제일 앞에 @를 붙이는 이유가 궁굼해요

0

594

2

3.:43 초 때부터 잘 안되는 것 같습니다...

0

328

1