2016-10-17 2 views
0

Ich benutze Appwarp API für ein Multiplayer-Spiel. Ich erhalte einen Fehler, wenn ich Invoke("recoverConnection", 5) anrufe.So lösen Sie den Einheitsfehler "Invoke kann nur vom Hauptthread aufgerufen werden"?

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(); 
} 

Der Fehler ist:

Invoke kann nur aus dem Haupt-Thread aufgerufen werden.

Konstruktoren und Feldinitialisierer werden beim Laden einer Szene vom Lade-Thread ausgeführt.

+0

Jut tun dies: http://blog.kibotu.net/unity-2/unity-start-corutines-main-thread-anything-else-matter – turnipinrut

Antwort

0

Der Callback onConnectDone wird in einem separaten Thread aufgerufen, sodass alle UI-bezogenen Änderungen oder die Invoke-Funktion im Hauptthread aufgerufen werden müssen. Sie können jedes Plugin verwenden, das Ihnen helfen kann, eine beliebige Methode im Haupt-Thread von einem beliebigen sekundären Thread aus aufzurufen. Sie können diese link ansehen. Dies wird Ihnen helfen, Invoke-Methode vom Haupt-Thread aufzurufen.

Ich hoffe, das wird Ihnen helfen.

+1

Bitte erarbeiten und fügen Sie ein paar weitere Details, so dass Ihre Antwort wird immer noch gültig, auch wenn die Verbindung unterbrochen ist. – CSharpie

Verwandte Themen