2017-02-17 6 views
1

GKTurnBasedMatch에서 다른 플레이어에게 교환을 보내려고합니다. 내가 그것을 보낼 때, 내 완료 핸들러는이 설명과 함께 큰 오류 메시지를 가져옵니다GKTurnBasedMatch를 실제로 시작하여 교환을 보낼 수있는 방법은 무엇입니까?

The requested operation could not be completed because the session is in an invalid state. 
Game is not active, session state is Matching 

난 그냥 두 선수가있을 때 시작하는 것이 아니라 16 명 선수의 총 수 있도록 경기를합니다. 그래서 자연스럽게 나는 maxPlayers = 16minPlayers = 2을 설정하고 있습니다. 나는 두 선수가 앉았을 때 자동으로 경기를 시작할 것이라고 생각했으나 그렇지는 않다.

if match.participants?.count == 2 { 
     match.status = GKTurnBasedMatchStatus.open 
    } 

을하지만 그때 나는 status가 읽기 전용 있음을 이야기 해요 :

경기는 두 선수를 가지고 일단 나는이 일을 시도했습니다. 수동으로 설정할 수 없습니다.

GKMatchmaker.shared().finishMatchmaking(for: match) 

을하지만 GKTurnBasedMatch에 대해 유사한 꼬추 수없는 것 :

자, 일반 GKMatch으로, 나는 공식적으로 호출하여 경기를 시작합니다.

실제로 어떻게 경기가 시작되어 두 선수가 교환을 할 수 있습니까?

답변

1

남자, GKTurnBasedMatch에 관한 문서는 희박한 파일 인 입니다.

다음은 사실입니다. 실제로는 GKTurnBasedMatch을 명시 적으로 시작하지 마십시오. 당신은 그것을 explicilty.

게임 플레이 중에 하나의 활성 플레이어에서 다른 활성 플레이어로 턴을 전달하면됩니다. 이 게임은 첫 번째 플레이어가 앉 자마자 기술적으로 시작됩니다.

내가 가지고있는 문제는 다른 활성 플레이어가 없을 때 턴을 통과했다는 것입니다. 그래서 우연히 게임 센터에 빈 자리에 차례를 지정하라고 명령했습니다. 오류 메시지가 나

Game is not active, session state is Matching 

말했다 그래서 그것은 현재 좌석 빈 아직도 그것을 채우기 위해 선수를 찾는 것을 의미했다. 현재 플레이어의 상태가 Matching (빈 좌석을 나타냄) 일 때마다 게임은 현재 활성 상태에서 벗어납니다.

는 도대체 왜이 누구의 전체 목적 어떤 플레이어, 상관없이 현재의 선수가 누구인지,은 내 능력 밖입니다 사이의 통신을 가능하게하는 것입니다 전송 교류에 영향을 미칠 것입니다. 하지만 너 거기 간다.

해결책 : 현재 턴에 실제 사람이 들고 빈 좌석이 아닌지 확인하십시오. 그런 다음 교환을 보낼 수 있습니다. 그렇지 않으면 당신은 할 수 없습니다.