Inflearn brand logo image

인프런 커뮤니티 질문&답변

차가운잎사귀님의 프로필 이미지
차가운잎사귀

작성한 질문수

[Unity] 함께 만들어가는 방치형 게임 개발

State Pattern #6 (Dead)

State Pattern #6 (Dead) 챕터의 Spawner.m_Players.Add(this); 문의드립니다.

해결된 질문

작성

·

34

·

수정됨

0

안녕하세요?

State Pattern #6 (Dead) 챕터의 (24분:53초)

 Player.cs 파일입니다.

Spawner.m_Players.Add(this); 문의드립니다.

 

간략하게 코드를 정리해봤는데요.

 

protected override void Start() {

Spawner.m_Players.Add(this);

}

private void OnReady() {

Spawner.m_Players.Add(this);

}

private void OnDead() {

Spawner.m_Players.Add(this);

}

private void OnDungeon(int value) {

Spawner.m_Players.Add(this);

}

public void DeadEvent() {

Spawner.m_Players.Remove(this);

}

 

이상황에서 빌드후 메인씬에 진입하면 예상으로

 

Start, OnReady 가 호출되고나서

 

m_Players 에 주 캐릭터가 배열에 2번 들어 갈것같은데요.

 

죽었을때 제거되고 m_Players에 추가되는것은 이해되나

적스폰이 되기전에 m_Players의 배열길이가 2개가되지않을까 싶어서요.

 

HashSet 으로 처리하면 해결되지않을까싶기도하고..

영상을 더봐야 이해되는부분인지..

 

이해가 잘안되서 그러니 이해부탁드립니다~

답변 1

1

Pinous님의 프로필 이미지
Pinous
지식공유자

안녕하세요, 일단 답이 늦어 죄송합니다.

해당 부분은 OnReady함수에 전체 List를 전체 Clear하는 함수를 넣어서 해결이 가능합니다!

아마 기존 프로젝트 역시 그렇게 처리가 되어있는걸로 기억하니 참고 부탁드리겠습니다.
Start에서 들어가고, OnReady가 호출되면 다시 Clear가 되니 걱정하시는 일은 발생하지 않을것으로 보입니다.

답변감사드립니다.

차가운잎사귀님의 프로필 이미지
차가운잎사귀

작성한 질문수

질문하기