エラー targetText = GameObject.Find("TextLog").GetComponent<Text>().GetComponent<Text>();のとこに object reference not set to an instance とでてきてしまいます。 条件で受信を行ったときのみテキストに表示させたい。 ifを使い 受信を行ったときのみ フラグをfulseするといわれたのですが どうしたらいいかわかりませんでした。 TextはUnityで表示しているものです。 ```C#``` コード using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Net; using System.Net.Sockets; using System.Threading; using UnityEngine.UI; // <---- 追加1 public class UdpSocket : MonoBehaviour { private string _MulticastAddr = "224.0.23.0"; // マルチキャストアドレス private string _RemoteHost = ""; // 送信相手アドレス private int _SendPort = 3610; // 送信ポート private int _RecvPort = 3610; // 受信ポート private UdpClient _UdpClient; // UDP private IPEndPoint _IpEndPoint; // IPEndPoint private Thread _RecvThread; // 受信スレッド // 接続 public void Connect() { IPAddress grpAddr = IPAddress.Parse(_MulticastAddr); if (_IpEndPoint != null) _IpEndPoint = null; _IpEndPoint = new IPEndPoint(grpAddr, _RecvPort); // マルチキャストグループに参加 Disconnect(); _UdpClient = new UdpClient(_RecvPort); _UdpClient.JoinMulticastGroup(grpAddr); // 受信スレッド生成 _RecvThread = new Thread(ReceiveMulticastThread); _RecvThread.Start(); // ノードプロファイル通知送信 SendNodeProfile(); } // 切断 public void Disconnect() { if (_RecvThread != null) { _RecvThread.Abort(); _RecvThread = null; } if (_UdpClient != null) { IPAddress grpAddr = IPAddress.Parse(_MulticastAddr); _UdpClient.DropMulticastGroup(grpAddr); _UdpClient.Close(); _UdpClient = null; } } // ノードプロファイル通知送信 public void SendNodeProfile() { byte[] pack = BuildNodeProfileInfo(); SendPacket(pack, _MulticastAddr); } // 送信 public void SendPacket(byte[] packet, string host) { _UdpClient.Send(packet, packet.Length, host, _SendPort); } // 受信スレッド public void ReceiveMulticastThread() { byte[] packet; int i = 0; System.Text.StringBuilder s = new System.Text.StringBuilder(); while (true) { packet = _UdpClient.Receive(ref _IpEndPoint); if (packet != null) { // 受信できた! s.Remove(0, s.Length); for (i = 0; i < packet.Length; i++) { s.Append(System.Convert.ToString(packet[i], 16).PadLeft(2, '0')); } Debug.Log(s.ToString()); RecvData = s.ToString(); } { { } } } } private string RecvData = ""; private Text Variable; ** __void Start() { targetText = GameObject.Find("TextLog").GetComponent<Text>().GetComponent<Text>(); } void Update() { bool flg = true; if (flg == false) { targetText.text = RecvData; flg = false;__ }** } Text targetText; // <---- 追加2 // ノードプロファイル通知パケット作成 private byte[] BuildNodeProfileInfo() { byte[] pack; pack = new byte[17]; pack[0] = 0x10; // EHD1 pack[1] = 0x81; // EHD2 pack[2] = 0x00; // pack[3] = 0x01; // ID pack[4] = 0x0E; // 送信元「ノードプロファイルクラス」 pack[5] = 0xF0; // EOJ = 0x0E F0 01 pack[6] = 0x01; // pack[7] = 0x0E; // 送信先「ノードプロファイルクラス」 pack[8] = 0xF0; // EOJ = 0x0E F0 01 pack[9] = 0x01; // pack[10] = 0x73; // ESV pack[11] = 0x01; // OPC pack[12] = 0xD5; // EPC pack[13] = 0x04; // PDC pack[14] = 0x01; // EDT pack[15] = 0x05; // pack[16] = 0xFF; // pack[16] = 0x01; // return pack; } }
回答2件
あなたの回答
tips
プレビュー