/// <summary> /// GS2-Realtime のルームに接続 /// </summary> /// <param name="animator"></param> /// <returns></returns> private IEnumerator ConnectRoom( Animator animator ) { yield return(controller.ConnectRoom( (r) => { animator.SetTrigger(r.Error == null ? Trigger.ConnectRoomSucceed.ToString() : Trigger.ConnectRoomFailed.ToString() ); session = r.Result; }, room.IpAddress, room.Port, room.EncryptionKey )); }
/// <summary> /// GS2-Realtime のルームを作成 /// </summary> /// <param name="callback"></param> /// <param name="ipAddress"></param> /// <param name="port"></param> /// <param name="encryptionKey"></param> /// <returns></returns> public IEnumerator ConnectRoom( UnityAction <AsyncResult <RelayRealtimeSession> > callback, string ipAddress, int port, string encryptionKey ) { var request = Gs2Util.LoadGlobalGameObject <RealtimeRequest>("RealtimeRequest"); var session = new RelayRealtimeSession( request.gameSession.AccessToken.Token, ipAddress, port, encryptionKey, ByteString.CopyFrom() ); session.OnRelayMessage += message => { gs2RealtimeSetting.onRelayMessage.Invoke(message); }; session.OnJoinPlayer += player => { gs2RealtimeSetting.onJoinPlayer.Invoke(player); }; session.OnLeavePlayer += player => { gs2RealtimeSetting.onLeavePlayer.Invoke(player); }; session.OnGeneralError += args => { gs2RealtimeSetting.onGeneralError.Invoke(args); }; session.OnError += error => { gs2RealtimeSetting.onRelayError.Invoke(error); }; session.OnUpdateProfile += player => { gs2RealtimeSetting.onUpdateProfile.Invoke(player); }; session.OnClose += args => { gs2RealtimeSetting.onClose.Invoke(args); }; AsyncResult <bool> result = null; yield return(session.Connect( this, r => { result = r; } )); if (session.Connected) { callback.Invoke( new AsyncResult <RelayRealtimeSession>(session, null) ); } else { gs2RealtimeSetting.onError.Invoke( result.Error ); callback.Invoke( new AsyncResult <RelayRealtimeSession>(null, result.Error) ); } }