프로토 타입 게임을 만들고 일부 멀티 플레이어 기능을 연결했습니다. 플로트를 전송하면서 문제가 발생했습니다. 누구든지이 문제에 부딪혔다면 궁금하거나 문제가 무엇인지 말해 줄 수 있습니다.iOS GameKit : 유선으로 플로트 보내기
이 같은 외모를 보내 구조 :
struct TRMessageHeader {
int length;
int code;
};
struct TRMessagePushPeer {
struct TRMessageHeader header;
float force;
};
와이어를 통해 전송한다
내 코드는 다음과 같습니다
내 수신 코드는 다음과 같습니다- (void) testFloat:(int) floatValue {
struct TRMessagePushPeer message = {0};
message.header.code = TRMessageCodePushPeer;
message.header.length = sizeof(message);
message.force = floatValue;
NSArray * peers = [_session peersWithConnectionState:GKPeerStateConnected];
NSData * data = [NSData dataWithBytes:&message length:sizeof(message)];
NSError * error = NULL;
[_session sendData:data toPeers:peers withDataMode:GKSendDataReliable error:&error];
}
:
- (void) onPeerPushed:(NSNotification *) notification {
NSDictionary * userInfo = [notification userInfo];
NSData * messageData = [userInfo objectForKey:@"messageData"];
struct TRMessagePushPeer * message = (struct TRMessagePushPeer *)[messageData bytes];
NSLog(@"peer sent float :%f",message->force);
}
그래서 내가 겪고있는 문제는 testFloat : 0.4573을 호출하면 수신 피어의 float 값은 0입니다. 전화를 걸면 testFloat : 1.3458이면 수신 피어의 float 값은 1입니다.
피어 수신 코드에서 반올림되는 것처럼 보이지만 그 이유는 확실하지 않습니다.
플로팅을 IEEE754로 인코딩하는 것이 효과적이지만 그림을 인코딩하기 전에 이것이 작동하지 않는 이유를 알고 싶습니다.
AH! 그게 전부 였어. 내가 그것을 간과했다라고 생각할 수 없다. 감사! – gngrwzrd