Unity文本框解析读取mqtt服务器JSON数据

本次内容是讲述如何将mqtt服务器中接收到的数据在Unity3D的文本框控件中显示JSON键值对中的“值”。

需求:

1.GameObject——>UI——>Text (将Unity 3D的文本框控件置于场景)

命名空间引用:using UnityEngine.UI;

2.Newtonsoft插件

命名空间引用:Newtonsoft.Json.Linq;

3.MQTT通讯需求:

(1)http://www.hslcommunication.cn/ 胡工科技下载资源库

(2)将两个DLL文件拖入Unity的scripts文件夹(2021版本及以上的Unity不同添加Newtonsoft,不然好像会报错,Unity已经自带了)

 

代码:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

using HslCommunication.MQTT;

using System.Text;

using System.Diagnostics;

using System;

using System.IO;

using Newtonsoft.Json.Linq;

public class text_transfer : MonoBehaviour

{

    private MqttClient mqttClient;

    public Text timeText; //在unity里的定义

    public string TimeText;

    // Start is called before the first frame update

    void Start()

    {

        timeText = GameObject.Find("Canvas/Text").GetComponent<Text>();

        mqttClient = new MqttClient(new MqttConnectionOptions()

        {

            ClientId = "ABC",                     // 客户端的唯一的ID信息

            IpAddress = "192.168.1.126",              // mqtt服务器的地址

        });

        // 连接服务器

        HslCommunication.OperateResult connect = mqttClient.ConnectServer();

        if (connect.IsSuccess)

        {

            // 连接成功

            UnityEngine.Debug.Log("连接成功");

        }

        else

        {

            // 连接失败,过会就需要重新连接了

            UnityEngine.Debug.Log("连接失败");

        }

        // 然后添加订阅

        HslCommunication.OperateResult sub = mqttClient.SubscribeMessage("test");

        if (sub.IsSuccess)

        {

            // 订阅成功

            UnityEngine.Debug.Log("订阅成功");

        }

        else

        {

            // 订阅失败

            UnityEngine.Debug.Log("订阅失败");

        }

        // 订阅示例

        mqttClient.OnMqttMessageReceived += (MqttClient client, string topic, byte[] payload) =>

        {

            TimeText = Encoding.UTF8.GetString(payload);

            UnityEngine.Debug.Log("Time:" + DateTime.Now.ToString());

            UnityEngine.Debug.Log("Topic:" + topic);

            UnityEngine.Debug.Log("Payload:" + Encoding.UTF8.GetString(payload));

            //timeText.text = TimeText;

        };      

    }

    private void Update()

    {

        string json = TimeText;

        JObject obj = JObject.Parse(json);

        timeText.text = obj["转速1"].ToString(); //将对应键的数值赋值给文本框

        UnityEngine.Debug.Log(timeText.text);//打印值的内容在文本框

        //UnityEngine.Debug.Log(Convert.ToInt64(timeText.text));

    }

}

1.定义文本框函数

2.接收JSON数据包

3.解析

 

4.可以用多个文本框接收对应需求的数据,或是所有数据在一个文本框显示亦可

单文本框显示:

 

 

 多文本框对应显示:多设置几个文本框变量再照前面的重复操作下就行了

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值