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

닥부님의 프로필 이미지
닥부

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

Delegate (대리자)

여러파일에서 구독시, 기능 수행 순서 조정이 가능한지요?

해결된 질문

작성

·

272

0

안녕하세요. 강좌 잘 보고있습니다.

-

각각 다른 파일이나 스코프에서 체이닝/구독 된 함수들의

동작 순서를 조정하거나 관리 할 수 있나요?

-

예를들어 '충돌' 판정을 하는 매니저가 있을 때,

1.플레이어 오브젝트 파일

2.몬스터 오브젝트 파일

3.무기 오브젝트 파일

에서 충돌판정 매니저를 구독후에

제각기 다양한 기능들을 += 하여 매니저에 전달 한다고 치면,

그 기능들이 동시에 수행되는것이 아니라 

3 > 2 > 1 이나  2 > 3 > 1 이런식으로 순서를 조정하고 싶다고 가정할 때

-

그런것이 가능한지 여부와

불가능 하다면, 이런 케이스에는 델리게이트를 쓰면 안되는지에 대해

여쭈어 보고싶습니다.

답변 2

2

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

대부분 += 등록 순서되로 실행되기는 하는데,
이것이 문법적으로 꼭 보장된 것은 아닙니다.
https://stackoverflow.com/questions/54402766/delegates-invocation-order

따라서 정말 정말 순서 보장이 꼭 필요한 상황이 있다면
델레게이트 하나만으로는 안 되고 우회법을 생각하셔야 합니다.

어떤 함수에서 2 > 3 > 1을 직접 호출해주고,
그 함수를 delegate += 해서 처리한다거나,
delegate 여러개를 만들어서 리스트로 관리 한다거나,
하는 여러 방법들이 있겠습니다.

0

닥부님의 프로필 이미지
닥부
질문자

ㄴ 감사합니다! 도움이 되었습니다!

닥부님의 프로필 이미지
닥부

작성한 질문수

질문하기