Exemple #1
0
 /// <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
                      ));
 }
Exemple #2
0
        /// <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)
                    );
            }
        }