如何解决统一错误“调用只能从主线程调用”?

时间:2016-10-17 14:58:42

标签: c# unityscript invoke appwarp

我正在使用Appwarp api进行多人游戏。我在拨打Invoke("recoverConnection", 5)时收到错误。

public void onConnectDone(ConnectEvent eventObj)  
{  
    Log ("onConnectDone : " + eventObj.getResult ());  

    if (eventObj.getResult () == 0)   
    {
        recoveryErrorCode = 0;  
        WarpClient.GetInstance ().JoinRoomInRange (0, 5, true);  
    }   
    else if (eventObj.getResult () == 9)  
    {  
        this.Invoke("recoverConnection", 5);  
    }  
    else if (eventObj.getResult () == 8)   
    {  
        // reconnected  
    }  
}  

void recoverConnection()
{
    WarpClient.GetInstance ().RecoverConnection ();
}

错误是:

  

只能从主线程调用Invoke。

加载场景时,将从加载线程执行构造函数和字段初始值设定项。

1 个答案:

答案 0 :(得分:1)

在单独的线程上调用onConnectDone回调,因此需要在主线程上调用任何与UI相关的更改或调用功能。您可以使用任何插件,它可以帮助您从任何辅助线程调用主线程上的任何方法。 您可以查看此link。这将帮助您从主线程调用Invoke方法。

我希望这会对你有所帮助。