private void Reconnect() { preLastAckTime = 0; countAfterDisconnect = 0; PhotonMultiBattleRelay.isDisconnected = false; if (myNetworkState == ConnectState.Connect) { PhotonMultiBattleRelay.StopEnemyAttackCoroutine(); // 데이터 요청을 받는다, 상대방에서 연결해제 되어있는 동안 실행되었던 데이터를 보낸다. } else { // 데이터를 요청한다. // 연결해제 되어있는 동안 실행되었던 데이터를 받아오고 이후에 공격명령 코루틴을 실행한다. //PhotonMultiBattleRelay.ActiveMyReConnect(); } myNetworkState = ConnectState.None; }
private void JudegeDisconnectPlayer() { if (!PhotonMultiBattleRelay.isDisconnected) { return; } if (PhotonNetwork.networkingPeer.LastSendAckTime > preLastAckTime) { Debug.Log("My Networking is connecting"); myNetworkState = ConnectState.Connect; PhotonMultiBattleRelay.StartEnemyAttackCoroutine(); // 코루틴을 실행해서 공격명령을 계속 진행한다. 이때 주기적인 전체 동기화는 하지 않는다. } else { Debug.Log("My Networking is disconnected"); myNetworkState = ConnectState.Disconnect; PhotonMultiBattleRelay.StopMyAttackCoroutine(); // 공격명령을 중지시키고 재연결이 이루어지면 받아야하는 패킷 순서를 보낸다. // 받아야하는 패킷 순서이후의 명령들은 지운다. } }