Unity テキスト ボックスは、mqtt サーバーから JSON データを解析して読み取ります

このコンテンツは、mqtt サーバーから受信したデータを使用して、Unity3D のテキスト ボックス コントロールに JSON キーと値のペアの「値」を表示する方法に関するものです。

必要:

1.GameObject——>UI——>Text (Unity 3Dのテキストボックスコントロールをシーンに入れる)

名前空間リファレンス: UnityEngine.UI を使用。

2. Newtonsoft プラグイン

名前空間参照: Newtonsoft.Json.Linq;

3. MQTT 通信要件:

(1) http://www.hslcommunication.cn/ Hugong Technology ダウンロード リソース ライブラリ

(2) 2 つの DLL ファイルを Unity の scripts フォルダーにドラッグします (Newtonsoft は、Unity バージョン 2021 以降では別の方法で追加されます。それ以外の場合、エラーが報告されるようで、Unity は既に付属しています)

 

コード:

System.Collectionsを使用します 。

System.Collections.Genericの使用 ;

UnityEngineの使用 ;

UnityEngine.UIの使用 ;

HslCommunication.MQTTを使用します 。

System.Textを使用します 。

System.Diagnosticsを使用します 。

システムを使用して ;

System.IOの使用 ;

Newtonsoft.Json.Linqの使用 ;

public  class  text_transfer  : MonoBehaviour

{

    プライベート MqttClient mqttClient;

    public  Text timeText; //統一された定義

    公開 文字列 TimeText;

    // Start は最初のフレーム更新の前に呼び出されます

    void 開始()

    {

        timeText = GameObject.Find( "キャンバス/テキスト" ).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( "正常に接続されました" );

        }

        それ以外

        {

            // 接続に失敗しました。しばらくしてから再接続する必要があります

            UnityEngine.Debug.Log( "接続に失敗しました" );

        }

        // 次に、サブスクリプションを追加します

        HslCommunication.OperateResult sub = mqttClient.SubscribeMessage( "テスト" );

        if  (sub.IsSuccess)

        {

            // サブスクライブ成功

            UnityEngine.Debug.Log( "サブスクリプションが成功しました" );

        }

        それ以外

        {

            // サブスクリプションに失敗しました

            UnityEngine.Debug.Log( "サブスクリプションに失敗しました" );

        }

        // サブスクリプションの例

        mqttClient.OnMqttMessageReceived += (MqttClient クライアント、文字列 トピック、バイト[] ペイロード) =>

        {

            TimeText = Encoding.UTF8.GetString(ペイロード);

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

            UnityEngine.Debug.Log( "トピック:"  + トピック);

            UnityEngine.Debug.Log( "ペイロード:"  + Encoding.UTF8.GetString(ペイロード));

            //timeText.text = TimeText;

        };      

    }

    プライベート void 更新()

    {

        文字列 json = TimeText;

        JObject obj = JObject.Parse(json);

        timeText.text = obj[ "speed 1" ].ToString(); //対応するキーの値をテキスト ボックスに割り当てます

        UnityEngine.Debug.Log(timeText.text); //テキスト ボックスの値の内容を出力します

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

    }

}

1. テキストボックス機能を定義する

2. JSON データ パケットを受信する

3. 分析

 

4.複数のテキストボックスを使用して要件に対応するデータを受信するか、すべてのデータを1つのテキストボックスに表示できます

単一のテキスト ボックスが表示されます。

 

 

 複数のテキスト ボックスの対応する表示: さらにテキスト ボックス変数を設定し、前の操作を繰り返します。

おすすめ

転載: blog.csdn.net/weixin_57716672/article/details/127526414