【发布时间】:2018-07-16 22:09:29
【问题描述】:
我正在尝试通过 MQTT 发送 Microsoft 的 Kinect v2 身体数据以有效映射骨骼数据,而无需直接连接到 Kinect,但我似乎无法正确反序列化 Body[]。我在 Update() 中的每一帧都发布了一个 Body 列表。
我当前的设置是使用 Newtonsoft 的 JSON.Net 序列化从 Body[] 获取的列表并将其发布到 MQTT(使用 https://github.com/vovacooper/Unity3d_MQTT)。我使用它是因为 Body 类不可序列化(所以我不能使用 JSONUtility?)。
基本上我有:
void Update() {
...
//trackedBodies is a List<Body> that contains the tracked Bodys
//client is MQTTClient that is connected
string bodyData = JsonConvert.SerializeObject(trackedBodies);
client.Publish("test", System.Text.Encoding.UTF8.GetBytes(bodyData));
...
}
还有:
void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) {
//Check MQTT for data, then deserialize
List<Body> bodyData = JsonConvert.DeserializeObject<List<Body>>(System.Text.Encoding.UTF8.GetString(e.Message));
Debug.Log(bodyData);
}
当列表为空时,我可以收到一个空的正文列表。当它非空时,该方法的代码会停止,我根本无法再接收消息。 Update() 方法仍然可以正常工作。
如果有人知道如何帮助我解决我目前拥有的问题,或者提出更好的替代方案来解决我的问题,我将不胜感激。
【问题讨论】:
标签: c# unity3d json.net mqtt kinect-v2