質問編集履歴

6 文字の修正

XLanceX

XLanceX score 8

2015/11/10 23:36  投稿

Unity5のテキスト表示について
UnityでUDPデータを受信して、UIのTextに表示をしようと考えているのですが表示することができません。
言語はC#です。
Debug.Log()については表示が確認できました。
11/10 Debug.Log()については表示が確認できました。
Debug.Log()の内容をTextに表示しようとすると、
> get_isActiveAndEnabled can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
というエラーが出ます。
```ここに言語を入力
   private UdpClient receivingUdpClient;
   private IPEndPoint remoteIpEndPoint;
   private Thread thread;
   public Text text;
   
   // port number
   private int receivePort = 3610;
   // Use this for initialization
   void Start()
   {
       try
       {
           receivingUdpClient = new UdpClient(receivePort);
       }
       catch (Exception e)
       {
           Debug.Log(e.ToString());
       }
       remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 3610);
       // start the thread for receiving signals
       thread = new Thread(new ThreadStart(ReceiveDataBytes));
       thread.Start();
       // debug
       Debug.Log("Thread started");
   }
   void ReceiveDataBytes()
   {
       
       while (true)
       {
           Debug.Log("Threading inside while");
           // NOTE!: This blocks execution until a new message is received
           Byte[] receivedBytes = receivingUdpClient.Receive(ref remoteIpEndPoint);
           string receivedStringData = BitConverter.ToString(receivedBytes).Replace("-", string.Empty);
           Debug.Log("受信データ: " + receivedStringData);
           text.text = receivedStringData;
         
           Thread.Sleep(8);
       }
       
   }
   void CloseClient()
   {
       thread.Abort();
       receivingUdpClient.Close();
   }
   void OnApplicationQuit()
   {
       CloseClient();
   }
```
よろしくお願いします。
  • C#

    9925 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    6252 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • UDP

    82 questions

    UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

5 進展部分の追記

XLanceX

XLanceX score 8

2015/11/10 23:34  投稿

Unity5のテキスト表示について
UnityでUDPデータを受信して、UIのTextに表示をしようと考えているのですが表示することができません。
言語はC#でVisualStudioでデバックし受信確認したものをUnityに組み込み編集しています。
言語はC#です。
Debug.Log()については表示が確認できました。
Debug.Log()の内容をTextに表示しようとすると、
> get_isActiveAndEnabled can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
というエラーが出ます。
```ここに言語を入力
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using System.Net;
using System.Net.Sockets;
   private UdpClient receivingUdpClient;
   private IPEndPoint remoteIpEndPoint;
public class ON_OFF : MonoBehaviour
{
   private Thread thread;
   public Text text;
   
   // port number
   private int receivePort = 3610;
   // Use this for initialization
   void Start()
   {
       try
       {
           receivingUdpClient = new UdpClient(receivePort);
       }
       catch (Exception e)
       {
           Debug.Log(e.ToString());
       }
       remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 3610);
       // start the thread for receiving signals
       thread = new Thread(new ThreadStart(ReceiveDataBytes));
       thread.Start();
       // debug
       Debug.Log("Thread started");
   }
   void ReceiveDataBytes()  
   {  
         
       while (true)  
       {  
   void Start()
   {
           Debug.Log("Threading inside while");
           // NOTE!: This blocks execution until a new message is received
           Byte[] receivedBytes = receivingUdpClient.Receive(ref remoteIpEndPoint);
           string receivedStringData = BitConverter.ToString(receivedBytes).Replace("-", string.Empty);
           Debug.Log("受信データ: " + receivedStringData);
           text.text = receivedStringData;
         
           Thread.Sleep(8);
       }
       
   }
   public void Receive()
   void CloseClient()
   {
       thread.Abort();  
       receivingUdpClient.Close();  
   }  
       for (;;)
       {
           while (true)
           {
               var sender = new IPEndPoint(IPAddress.Any, 3610);
               var UDPsender = new UdpClient(sender);
               byte[] ReceiveData = UDPsender.Receive(ref sender);
               string data = BitConverter.ToString(ReceiveData).Replace("-", string.Empty);
               UDPsender.Close();
               GetComponent<Text>().text = "受信データ:" + data;
           }
       }
   void OnApplicationQuit()
   {
       CloseClient();
   }
}  
```
 
 
よろしくお願いします。
  • C#

    9925 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    6252 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • UDP

    82 questions

    UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

4 編集方法の追加

XLanceX

XLanceX score 8

2015/11/04 15:23  投稿

Unity5のテキスト表示について
UnityでUDPデータを受信して、UIのTextに表示をしようと考えているのですが表示することができません。
言語はC#です。
言語はC#でVisualStudioでデバックし受信確認したものをUnityに組み込み編集しています。
```ここに言語を入力
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using System.Net;
using System.Net.Sockets;
public class ON_OFF : MonoBehaviour
{
   void Start()
   {
   }
   public void Receive()
   {
       for (;;)
       {
           while (true)
           {
               var sender = new IPEndPoint(IPAddress.Any, 3610);
               var UDPsender = new UdpClient(sender);
               byte[] ReceiveData = UDPsender.Receive(ref sender);
               string data = BitConverter.ToString(ReceiveData).Replace("-", string.Empty);
               UDPsender.Close();
               GetComponent<Text>().text = "受信データ:" + data;
           }
       }
   }
}
```
よろしくお願いします。
  • C#

    9925 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    6252 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • UDP

    82 questions

    UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

3 ソースコード追加

XLanceX

XLanceX score 8

2015/11/04 15:07  投稿

Unity5のテキスト表示について
UnityでUDPデータを受信して、UIのTextに表示をしようと考えているのですが表示することができません。
言語はC#です。
```ここに言語を入力  
using UnityEngine;  
using System.Collections;  
using UnityEngine.UI;  
using System;  
using System.Net;  
using System.Net.Sockets;  
 
public class ON_OFF : MonoBehaviour  
{  
 
 
 
   void Start()  
   {  
 
 
   }  
 
   public void Receive()  
   {  
 
       for (;;)  
       {  
           while (true)  
           {  
               var sender = new IPEndPoint(IPAddress.Any, 3610);  
               var UDPsender = new UdpClient(sender);  
 
               byte[] ReceiveData = UDPsender.Receive(ref sender);  
 
               string data = BitConverter.ToString(ReceiveData).Replace("-", string.Empty);  
 
               UDPsender.Close();  
 
               GetComponent<Text>().text = "受信データ:" + data;  
 
 
           }  
 
 
       }  
   }  
}  
```  
 
 
 
 
よろしくお願いします。
  • C#

    9925 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    6252 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • UDP

    82 questions

    UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

2 質問内容

XLanceX

XLanceX score 8

2015/11/04 10:14  投稿

Unity5のテキスト表示について
UnityでUDPデータを受信して、条件を付けてUIのTextに表示をしようと考えているのですが、UDP受信が関係する部分だけ表示することができません。
UnityでUDPデータを受信して、UIのTextに表示をしようと考えているのですが表示することができません。
言語はC#です。
```ここに言語を入力  
using UnityEngine;  
using System.Configuration;  
using UnityEngine.UI;  
using System;  
using System.Net;  
using System.Net.Sockets;  
using System.Collections.Generic;  
 
public class ON_OFF : MonoBehaviour  
{  
   public Text text;  
 
   void Start()  
   {  
 
 
   }  
 
   public void Receive()  
   {  
        for (;;)  
       {  
           while (true)  
           {  
               var sender = new IPEndPoint(IPAddress.Any, 3610);  
               var UDPsender = new UdpClient(sender);  
 
               byte[] ReceiveData = UDPsender.Receive(ref sender);  
 
                 string data = BitConverter.ToString(ReceiveData).Replace("-", string.Empty);  
   
                 UDPsender.Close();  
            }  
       }  
   }  
 
   public void Text(string data)  
   {  
       Receive();  
 
       string EHD1 = data.Substring(0, 2);  
       string EHD2 = data.Substring(2, 2);  
       string TID1 = data.Substring(4, 2);  
       string TID2 = data.Substring(6, 2);  
       string SEOJ1 = data.Substring(8, 2);  
       string SEOJ2 = data.Substring(10, 2);  
       string SEOJ3 = data.Substring(12, 2);  
       string DEOJ1 = data.Substring(14, 2);  
       string DEOJ2 = data.Substring(16, 2);  
       string DEOJ3 = data.Substring(18, 2);  
       string ESV = data.Substring(20, 2);  
       string OPC = data.Substring(22, 2);  
       string EPC = data.Substring(24, 2);  
       string PDC = data.Substring(26, 2);  
       string EDT1 = data.Substring(28, 2);  
   
       if (DEOJ1.Equals("02") && DEOJ2.Equals("7C"))  
       {  
 
 
           if (EDT1.Equals("30"))  
           {  
               text.text = "ON";  
 
           }  
 
           else if (EDT1.Equals("31"))  
           {  
               text.text = "OFF";  
           }  
 
       }  
 
       else  
       {  
       text.text = "Error";  
       }  
         
       }  
   }  
```  
 
よろしくお願いします。
  • C#

    9925 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    6252 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • UDP

    82 questions

    UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

1

XLanceX

XLanceX score 8

2015/11/04 03:13  投稿

Unity5のテキスト表示について
UnityでUDPデータを受信して、条件を付けてUIのTextに表示をしようと考えているのですが、UDP受信が関係する部分だけ表示することができません。
言語はC#です。
```ここに言語を入力
using UnityEngine;
using System.Configuration;
using UnityEngine.UI;
using System;
using System.Net;
using System.Net.Sockets;
using System.Collections.Generic;
public class ON_OFF : MonoBehaviour
{
public Text text;
void Start()
{
}
public void Receive()
{
for (;;)
{
while (true)
{
var sender = new IPEndPoint(IPAddress.Any, 3610);
var UDPsender = new UdpClient(sender);
byte[] ReceiveData = UDPsender.Receive(ref sender);
string data = BitConverter.ToString(ReceiveData).Replace("-", string.Empty);
UDPsender.Close();
}
}
}
public void Text(string data)
{
Receive();
string EHD1 = data.Substring(0, 2);
string EHD2 = data.Substring(2, 2);
string TID1 = data.Substring(4, 2);
string TID2 = data.Substring(6, 2);
string SEOJ1 = data.Substring(8, 2);
string SEOJ2 = data.Substring(10, 2);
string SEOJ3 = data.Substring(12, 2);
string DEOJ1 = data.Substring(14, 2);
string DEOJ2 = data.Substring(16, 2);
string DEOJ3 = data.Substring(18, 2);
string ESV = data.Substring(20, 2);
string OPC = data.Substring(22, 2);
string EPC = data.Substring(24, 2);
string PDC = data.Substring(26, 2);
string EDT1 = data.Substring(28, 2);
if (DEOJ1.Equals("02") && DEOJ2.Equals("7C"))
{
if (EDT1.Equals("30"))
{
text.text = "ON";
}
else if (EDT1.Equals("31"))
{
text.text = "OFF";
}
}
else
{
text.text = "Error";
}
}
}
```
よろしくお願いします。
  • C#

    9925 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    6252 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • UDP

    82 questions

    UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る