前提
Hololens2を用いてほかのアプリケーション(今回はRTミドルウェア)とHololens2を通信をしたいと考えています。
そこで、Hololens2はUWP変換されるため、
#if Unity_UWP
#endif
を用いて、Unity部分とUWP部分を分けて書こうと考えました。しかし、この分け方が自分の調べたところ、Visual Studioの構成マネージャーがx86で使用可能であるが、Hololens2は構成マネージャーがARM64でしか対応できないため、切り分けがうまくできず通信ができていません。そのため、Hololens2とほかのアプリケーションとの通信で何か方法(UDP通信,TCP通信など)があればご教授いただきたいです。
実現したいこと
[1]. Hololensとほかのアプリケーションの通信
発生している問題・エラーメッセージ
構成マネージャーが異なってることから、UWPとUnity部分の切り分けができずうまく通信ができていない。
該当のソースコード
C#
1using System; 2using System.IO; 3using System.Threading.Tasks; 4#if Windows_UWP 5using Windows.Networking; 6using Windows.Networking.Sockets; 7#endif 8using UnityEngine; 9 10public class TcpNetworkClientManager1 : MonoBehaviour 11{ 12 13 public GameObject ball; 14 public GameObject cube; 15 16#if Windows_UWP 17 private StreamWriter writer = null; 18#endif 19 20 public void TcpNetworkClientManager2(string IP, int port) 21 { 22 cube.SetActive(false); 23#if Windows_UWP 24 Task.Run(async () => { 25 StreamSocket socket = new StreamSocket(); 26 await socket.ConnectAsync(new HostName(IP),port.ToString()); 27 writer = new StreamWriter(socket.OutputStream.AsStreamForWrite()); 28 StreamReader reader = new StreamReader(socket.InputStream.AsStreamForRead()); 29 try 30 { 31 string data = await reader.ReadToEndAsync(); 32 } 33 catch (Exception) { } 34 writer = null; 35 }); 36 ball.SetActive(false); 37#endif 38 } 39 40 public void SendMessage(string data) 41 { 42#if Windows_UWP 43 if (writer != null) Task.Run(async () => 44 { 45 await writer.WriteAsync(data); 46 await writer.FlushAsync(); 47 }); 48#endif 49 } 50 // // Start is called before the first frame update 51 // void Start() 52 // { 53 54 // } 55 56 // // Update is called once per frame 57 // void Update() 58 // { 59 60 // } 61} 62
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class TCPIP : MonoBehaviour 6{ 7 8 string IP = "127.0.0.1"; 9 int port = 3333; 10 11 // TcpNetworkClientManager1 client = new TcpNetworkClientManager1(); 12 13 //public GameObject box; 14 TcpNetworkClientManager1 tcp_uwp; 15 16 17 // Start is called before the first frame update 18 void Start() 19 { 20 tcp_uwp = this.GetComponent<TcpNetworkClientManager1>(); 21 tcp_uwp.TcpNetworkClientManager2(IP, port); 22 Debug.Log("Connected"); 23 // client.TcpNetworkClientManager2(IP, port); 24 } 25 26 // Update is called once per frame 27 void Update() 28 { 29 30 } 31} 32
試したこと
cube.SetActive(false);でオブジェクトの非表示を行って、メソッド内に入ることは確認したのだが、#if Windows_UWP~#endif間には入らずに終わってることは確認したため、この切り分け方法に問題があると考えた。
補足情報(FW/ツールのバージョンなど)
同一PC間の通信です。
Unity2020.3.30f1
Visual Studio 2019
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。