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

최성진님의 프로필 이미지
최성진

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

State 패턴

_state변수 질문

작성

·

312

0

27번째줄 코드에 _state = PlayerState.Idle라고 되있는데 57번째 줄 switch(_state) 라 하면안 UpdateIdle만 실행되야 하지않나요 전부다 실행되는데 왜그런거죠?

답변 5

0

최성진님의 프로필 이미지
최성진
질문자

visual studio에 찾기기능으로 _state를 돌려보니깐 중간에 ray부분에서 PlayerState.Moving으로 바꿨네요 감사합니다

0

최성진님의 프로필 이미지
최성진
질문자

이렇게 확인하는것이 맞나요?

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

네. _state를 Moving으로 바꾼 적이 없다면,
유니티 에디터 툴 상에서 고치지 않았는지,
그것도 아니라면 코드 상에서 _state = Moving으로 바꾸는 부분에
breakpoint를 걸고 다시 실행해보세요

0

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

위 내용만으로는 딱히 문제가 없어 보이는데요.
로그보단 breakpoint를 걸고 유니티에 연결해서 살펴보시는게 정확합니다.
UpdateMoving() 안에다 breakpoint를 걸고 콜스택을 확인해보세요

0

최성진님의 프로필 이미지
최성진
질문자

여기서 _state가 PlayerState.Idle니깐 UpdateIdle함수만 실행되여야 하는데 UpdateMoving함수도 실행됩니다( UpdateIdle함수는 "UpdateIdle"를 Debug.Log로 출력해서 실행되는걸 확인했고 UpdateMoving함수는 "UpdateMoving Moving"이 출력되고 움직이는 코드가 실행되는걸로 함수가 실행됬다는것을 확인했습니다)

0

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

네 Update에서 상황에 따라 switch-case로 골라서
idle이면 UpdateIdle 호출하기 때문에 그게 맞는데요.
어떻게 코드를 작성하셨는지 스샷을 보여주셔야 정확히 답변을 드릴 수가 있을 것 같네요

최성진님의 프로필 이미지
최성진

작성한 질문수

질문하기