このコンテンツは、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つのテキストボックスに表示できます
単一のテキスト ボックスが表示されます。
複数のテキスト ボックスの対応する表示: さらにテキスト ボックス変数を設定し、前の操作を繰り返します。