inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

MonsterController Init()함수 호출이 이해가 잘 안갑니다

349

luhc

작성한 질문수 7

0

루키스님 강의보며 설계적인 측면에서 코드를 분석을 하고 있는데요.

제가 알고 있는 Init()함수 사용은 맨처음 오브젝트가 생성되었을 때 Awake() 등에서 최초로 호출되어 GetComponent() 등 한 번만 수행할 수 있는 함수라고 생각을 하고 있습니다.

근데 코드를 보니 Monster는 디스폰됬다 다시 스폰될 때 SetInfo() 함수를 호출하고 SetInfo()함수에서 Init()을 다시 호출하고 있더라구요.

스폰될 때 마다 초기화 해주어야 하는 인자들 ex) CreatureState(상태) 등 과 한번만 해줘도 되는 것들 ex) GetComponent()을 Init()에 같이 묶여있어 매우 혼란이 온 상태입니다.

Init()이 여러번 불린다면 bool 인자도 필요하지 않고 굳이 번거롭게 할 필요가 없다고 생각이 드는데요.

코드를 보다보면 부모의 Awake()에서 Init()을 호출하고 또 자식의 Awake()에서도 Init()을 호출하고 어떤데는 base.Init()만 하고 어떤데는 if(base.init() == false)해주고 같이 작성을 하셨는데 그 각각마다 다 어떤 이유를 가지고 하신건지 아니면 그냥하신건지 궁금합니다.

 

C# unity object-pooling

답변 1

0

Rookiss

우선 여담인데 코드를 볼 때 모든 것에 의미를 부여하지 마세요.
규모가 어느 정도 커진 프로젝트는 다수의 작업자가 붙고,
따라서 그들이 다 옳게 했다는 보장이 없습니다.
중간에 드랍하긴 했지만 이 프로젝트만 하더라도 보조 프로그래머가 여러명 붙었습니다.

그 다음 질문주신 부분인데요.
기본적으로 Awake는 생성 시 바로 호출되기 때문에,
이것을 생성자처럼 이용하면 되고 사실
virtual void Awake()로 가상함수로 만들어서 사용해도 됩니다.

하지만 습관적으로 유니티 예약된 Awake, Start, Update 등을 테스트 용도로 활용하는 분들도 있어
더 명확하게 Init 가상함수를 파서 작업하고,
Awake나 Start에 넣어서 초기화 부분만 빼놓은 것인데요.
Awake에 넣었다면 초기화 코드를 다 실행하니
SetInfo에서 굳이 Init() 호출을 안 해도 되지만
반대로 Start에 넣었다면, 만드는 순간이 아니라 다음 프레임이 Start가 호출될 수 있어
그럴 경우라면 SetInfo에선 Init()을 해줘야 합니다.
결과적으로 이 경우엔 SetInfo에서 Init을 안해줘도 되는게 맞습니다.



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

0

85

1

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

0

143

2

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

0

65

1

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

0

86

1

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

0

116

1

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

0

122

1

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

0

169

2

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

0

113

1

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

0

169

1

EquipmentData 관련해서 질문드립니다

0

117

1

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

0

171

2

MonsterControllelr 에서 State Dead 사용

0

107

1

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

0

241

2

Instantiate 관련 질문 드립니다

0

159

1

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

0

600

2

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

0

182

1

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

1

346

1

Coroutine과 uniTask 질문드립니다.

0

240

1

ResourceManager 메서드 역할

0

221

1

스프라이트 자료

1

181

1

xml 에

0

269

2

UI 리소스 사용문의

0

270

1

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

0

595

2

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

0

329

1