我正在使用websocket-sharp,它可以连接到我的websocket服务器并可以接收消息。我尝试从onMessage加载场景,但是它不起作用。以下是onMessage:
ws.OnMessage += (sender, e) =>
{
Debug.Log("before load scene");
SceneManager.LoadScene("Game");
Debug.Log("after load scene");
};
它将打印before load scene
,但无法加载场景并且不打印after load scene
答案 0 :(得分:1)
不幸的是,这行不通。 WebSocketSharp回调在工作线程上运行。也许这是为了减少对渲染线程(进而对我们的帧速率)的影响,或者仅仅是网络库施加的限制。无论哪种情况,除主线程外,Unity3d都不允许我们与其API进行交互。
您可以使用分派器模式来解决此问题,See this article
答案 1 :(得分:1)
尝试创建一个名为SceneListener的新类,它是MonoBehaviour。 请执行以下操作:
ws.OnMessage += (sender, e) =>
{
sceneListener.Switch()
};
然后将引用从SceneListener实例传递给您的回调:
{{1}}