このコードは
unityのこのボタンを押すとアタッチしたテキストに文字を表示できるものです
今回はChangeTextと表示させていますが
UDP通信をしたコードを下にのせておきます
そのときの受信パケットのデータ、コンソールをテキストに表示したい
using UnityEngine;
using System.Collections;
using UnityEngine.UI; // <---- 追加1
public class text3 : MonoBehaviour
{
private Text targetText; // <---- 追加2
GameObject _Object;
public void hoge() { _Object = GameObject.Find("Text"); this.targetText = _Object.GetComponent<Text>(); // <---- 追加3 this.targetText.text = "ChangeText"; // <---- 追加4 }
}
こちらが通信を開始して 受信パケットのデータ コンソール10810001.... が出力されます そのコンソールを上記のソースから 画面のテキストに表示したい ```using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Net; using System.Net.Sockets; using System.Threading; 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()); } } } // ノードプロファイル通知パケット作成 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; } } コード
結局何が疑問なのでしょうか? スクリプトから別のスクリプトの変数等を操作したいなら「unity 別のスクリプト」で検索すると情報がたくさん出ますが…… また、コードエリアが崩れているのでプレビューを見ながら正しく「```」で括ってください。
返信ありがとうございます まずプレビューを見てみます。本当にプログラムの右も左も分からないような初心者なので検索したのですが理解ができませんでした、、、
https://teratail.com/help/question-tips こちらの「2. 質問をする前に自分で何がわからないのかを把握しましょう」の項をご覧ください。どんなサイト・コードを見て、どこまでが分かり、どこから分からないのか提示してもらえないと回答しても二度手間になったり余計な情報になってしまうかもしれません。
ありがとうございます もう一度情報を整理して何がわからないのかどういう意味なのかをしっかり調べたいと思います
https://teratail.com/questions/144482 これはこの質問の続きでしょうか? もしそうなら多重投稿状態です(本来ならこの質問を編集するのが正しいやり方です)。回答が付いた質問は削除出来ないので、こちらの質問に削除申請を出しておいてください。
わかりました。この一週間で利用し始めたので、あまりしくみを理解していないせいで申し訳ございません。
今確認したらヘルプに質問が編集出来る旨、書かれていないんですね……であれば分からないのも無理は無いと思います。深く気になさらないでください。
そうなんですか....わかりました!またよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー