0

我正在尝试在我的 iphone 游戏中为游戏中心多人游戏发送一个 int。

整数出现并显示为奇数长整数值,而不是预期的值。

我的 .h 中有这个:

typedef enum
{
 kPacketTypeScore,
} EPacketTypes;

typedef struct
{
 EPacketTypes type;
 size_t size;
} SPacketInfo;

typedef struct
{
 SPacketInfo packetInfo;

 int score;
} SScorePacket;

然后.m:

发送数据:

scoreData *score = [scoreData sharedData];

  SScorePacket packet;
  packet.packetInfo.type = kPacketTypeScore;
  packet.packetInfo.size = sizeof(SScorePacket);
  packet.score = score.score;

  NSData* dataToSend = [NSData dataWithBytes:&packet length:packet.packetInfo.size];
  NSError *error;
  [self.myMatch sendDataToAllPlayers: dataToSend withDataMode: GKMatchSendDataUnreliable error:&error];
  if (error != nil)
  {
   // handle the error
  }

接收:

SPacketInfo* packet = (SPacketInfo*)[data bytes];

 switch (packet->type)
 {
  case kPacketTypeScore:
  {
   SScorePacket* scorePacket = (SScorePacket*)packet;

   scoreData *score = [scoreData sharedData];

   [scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket]];

   break;
  }

  default:
   CCLOG(@"received unknown packet type %i (size: %u)", packet->type, packet->size);
   break;
 }

有任何想法吗?谢谢。

4

2 回答 2

1

尝试:

[scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket->score]]; // Note: scorePacket.score

您正在尝试打印指向分数包的指针,而不是包中的分数。

于 2011-01-15T18:18:42.453 回答
0

需要 scorePacket->score 而不是 scorePacket。打印错误的东西。

于 2011-01-15T18:46:54.000 回答