2016-10-17 9 views
0

멀티 플레이 게임에 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(); 
} 

오류는 다음과 같습니다 호출 만 메인 스레드에서 호출 할 수

.

생성자와 필드 초기화 프로그램은 장면을로드 할 때로드 스레드에서 실행됩니다.

+0

이 작업을 수행하십시오. http://blog.kibotu.net/unity-2/unity-start-coroutines-main-thread-anything-else-matter – turnipinrut

답변

0

콜백 onConnectDone은 별도의 스레드에서 호출되므로 UI ​​관련 변경 사항이나 호출 기능이 주 스레드에서 호출되어야합니다. 보조 스레드에서 주 스레드의 메소드를 호출하는 데 도움이되는 플러그인을 사용할 수 있습니다. link을 살펴볼 수 있습니다. 이렇게하면 주 스레드에서 Invoke 메서드를 호출하는 데 도움이됩니다.

이 정보가 도움이되기를 바랍니다.

+1

자세한 내용을 자세히 작성하여 답변을 보내주십시오. 링크가 끊어져도 여전히 유효합니다. – CSharpie