전체 에러 메세지는 아래와 같고
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.
gameObject.SetActive(true);
통신 데이터를 받고 UI 를 고치려고 이런걸 호출 했는데 에러가 발생했다.
UI 함수는 별도의 쓰레드에서는 호출 할 수 없다.
이벤트를
ConcurrentQueue 를 이용해서 이벤트를 쌓아
void Update()
에서 빼서 사용하는 식으로 처리해야한다.
class MyEvent {
string action;
string data;
}
ConcurrentQueue<MyEvent> my_event_queue = new ConcurrentQueue<MyEvent>();
void OnRecv(string data) {
var evt = new my_event_queue();
evt.action = "recv";
evt.data = data;
my_event_queue.Enqueue(evt);
}
void Update() {
WS__Event evt;
while(ws_event_queue.TryDequeue(out evt))
{
if(evt.action == "recv") {
// 여기서 처리
}
}
}
이런식으로 OnRecv 에서 받은걸 큐에 넣고
Update 에서 빼서 처리