문제
RaiseEvent를 보낼 때 Interest Group을 설정하니 메시지를 받지 못하는 문제가 있었다.
(다르게말하면 ReceiverGroup.All이 작동하지 않는 문제)
코드상으로는 문제가 없는데 왜그럴까해서 빌드하여 다수의 클라이언트로 테스트하니
자신(로컬)에게는 오지않지만 다른사람들은 메세지를 잘 받더라.
원인
인터넷을 찾다보니 나와 똑같은 증상을 겪는 글을 발견했다.
https://forum.photonengine.com/discussion/6497/receivergroup-all-doesnt-seem-to-work-for-raiseevent
이유는 InterestGroup을 설정하면 Receivers 옵션이 무시되서 그렇단다.
공식문서에도 없는 내용이었고 2015년에도 있던 문제인데 아직까지 해결이 안됐다니..
1 2 3 4 5 6 | PhotonNetwork.RaiseEvent(33, null, true, new RaiseEventOptions { CachingOption = EventCaching.DoNotCache, Receivers = ReceiverGroup.All, InterestGroup = (byte)30 }); | cs |
이렇게 보내면 InterestGroup 때문에 CachingOption 무시(0번 외의 그룹은 캐싱하지않음), Receiver 무시 (버그인듯)
되어 결국 InterestGroup만 설정되버린다
해결
현실에 순응하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void ExecutionRaiseEvent() { byte[] content = new byte[] { 30 }; PhotonNetwork.RaiseEvent(33, content, true, new RaiseEventOptions { CachingOption = EventCaching.DoNotCache, Receivers = ReceiverGroup.All }); } public void ReceiveRaiseEvent(byte eventcode, object content, int senderid) { byte[] selected = (byte[])content; int interestGroup = selected[0]; if (eventcode == 33) { if(interestGroup == 30) print("rrrrr"); } } | cs |
Receivers는 All로. InterestGroup은 Content에 담아보낸다.
RaiseEvent를 수신한 후 content에서 InterestGroup을 가져와 필터링
'프로그래밍 공부 > Photon' 카테고리의 다른 글
PlayFab으로 닉네임 설정하기 (8) | 2018.09.22 |
---|---|
메세지를 전송하는 방법. OnSerializePhotonView, RPC, RaiseEvent (0) | 2018.09.18 |
PlayFab을 이용하여 로그인 인증하기 (3) | 2018.08.09 |
10. 튜토리얼 문제 해결 (0) | 2018.08.07 |
9. 플레이어 UI 프리팹 (0) | 2018.08.07 |