inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

Patrol AI

_coPatrol==null 질문

280

rhodonite

작성한 질문수 23

0

안녕하세요! 항상 강의 잘 듣고 있습니다.(키보드도 잘 쓰고 있습니다.)

protected override void UpdateIdle()

{

    base.UpdateIdle();

    if(_coPatrol!=null)

    {

        StopCoroutine(_coPatrol);

        _coPatrol=null;

    }

}

로 null 체크하는 부분 관련하여 질문드립니다.

강의 코드에서는 UpdateIdle() 에서

if(_coPatrol=null)

로 확인하고 Coroutine을 실행하고 있는데요,

다음과 같이 생각하여 if문을 지우고 UpdateIdle에서 곧바로 StartCoroutine을 하도록 하였습니다.

protected override void UpdateIdle()

{

    base.UpdateIdle();

    _coPatrol = StartCoroutine("CoPatrol");

}

-> 어차피 CoPatrol이 실행되면 State가 Moving상태가 되어 Coroutine이 2중으로 실행되지 않는다. 그러므로 StartCoroutine만 놔둬도 됨.

만약 갈 장소 검색에 실패하거나 CoPatrol이 완료되면 Idle이 되어 다음 Frame에 CoPatrol을 수행한다.(반복)

그래서 실행했을 때의 화면은 다음과 같습니다.

https://youtu.be/yHUq12WU2dA

강의 코드에서는 깔끔하게 해당 목적지로 이동하고 끝이지만, 수정한 코드에서는 정신없이 왔다갔다 하다가 해당 목적지로 이동하는 현상이 보입니다.

곰곰이 생각해보았으나 마땅한 이유가 생각나지 않아 질문드립니다.

C# unity

답변 1

0

Rookiss

이런 부분에 대한 해결책은 스스로 찾으셔야 합니다.
두 코드 사이의 차이라면 null 체크로 인해

-> 어차피 CoPatrol이 실행되면 State가 Moving상태가 되어 Coroutine이 2중으로 실행되지 않는다. 그러므로 StartCoroutine만 놔둬도 됨.

위 가정을 했냐 안했냐의 차이 정도이니,
실제로 if (_coPatrol != null) 안으로 들어오는 케이스가 있는지
breakpoint를 잡고 확인해보면 확실히 알 수 있겠죠.
일반적으로 Patrol 상태라 해도 타격을 받았다거나, 길이 막혔다거나 하면
다른 상태로 바뀌는게 일반적이긴 하니, 기존의 코루틴은 꼼꼼히 취소해주는 것이 좋습니다.

Lessons 3 & 4 don't have subtitles unfortunately

0

39

1

MessagePack

0

105

1

본인 플레이어 이동 관련 질문

0

69

1

Part7 Part9 질문이 있습니다.

0

89

1

.

0

131

1

.

-1

119

2

게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제

0

103

1

타일 팔레트 깔았는데도 안돼요

0

149

2

2D로 그냥 만들어도 되나요?

0

95

2

지난 강의와 이어지는게 맞을까요?

0

96

2

순환참조 문제로 인해 발생하는 문제는 없을까요?

0

166

2

유니티 클라와 C++서버연동

0

291

2

멀티플레이 테스트 환경 관련 질문입니다

0

227

3

강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!

0

164

2

코드 관련한 몇 가지 질문입니다!

0

168

2

3d 프로젝트 이동 동기화 관련

0

343

4

파트 7 스트레스 테스트 질문 드립니다.

1

204

2

맵 이동 방식

0

144

0

맵 이동 관련해서 질문드립니다.

0

97

1

안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,

0

223

2

안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!

0

173

1

[팁] 2024년 기준 버전 이슈?

0

469

1

SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?

1

210

1

지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것

0

343

2