websocketで文字列が送られてきたらunityのUI(テキスト)を送られてきた文字列に変更するプログラムを書きたいのですが、うまくいきません。
具体的にはwebsocketで送られと来た文字列の時だけ実行されないコードがあるらしく、その原因と解決法を教えてください。
わかったことはtext=e.Dataより下の行のコードも実行されていないこと(この行より下にDebug.Log関数を使って文字列がコンソールに表示されるのか確かめた)
別のスクリプトの関数を使うコードを書くと、そこまでは実行されるがそれより下は実行されない。
e.Typeという関数が使えない。
C#
1 2using UnityEngine; 3using WebSocketSharp; 4using System.Collections; 5using UnityEngine.UI; 6 7public class ClientExample : MonoBehaviour 8{ 9 private WebSocket ws_; 10 public GameObject obj; 11 void Awake() 12 { 13 ws_ = new WebSocket("ws// 略); 14 ws_.OnMessage += (sender, e) =>{ 15 obj.GetComponent<Text>().text = e.Data; 16Debug.Log('pass'); //何故かこれは実行されない 17 }; 18 ws_.connect() 19}
ws_.OnMessage += (sender, e) =>{
Debug.Log('pass1');
obj.GetComponent<Text>().text = e.Data;
Debug.Log('pass2');
};
としたらメッセージを受信したときにpass1は出力されるがpass2は出力されないということですか?
それともAwakeが実行された時にpassと出力されないということを言っていますか?
前者です!
特にコンソールにはエラーが出ていないので訳がわかりません、、、
https://mslgt.hatenablog.com/entry/2018/07/20/071102
こちらが参考になったりしませんかね?
こちらの話はエラーが発生していたとのことなので違うかもしれませんが、メインスレッドではないスレッドでの動作となっているとか・・・
回答2件
あなたの回答
tips
プレビュー