//---------------------------------------------------------------------------

        /// <summary>
        /// ボイスアダプターを接続する(OnPreDecodeは PlayerId Data Channels SamplingRate)
        /// </summary>
        /// <param name="tOnReceived"></param>
        public static MultiplayerRequest  AttachVoiceAdapter(int tPlayerId, Transform tParent, bool t3D = true, int tSamplingRate = 16000, int tPacketTime = 40, Action <int, float[], int, int> tOnPreDecode = null)
        {
            if (m_Instance == null || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.AttachVoiceAdapter(tPlayerId, tParent, t3D, tSamplingRate, tPacketTime, tOnPreDecode, tRequest));
            return(tRequest);
        }
        //-----------------------------------

        /// <summary>
        // ルームを退室する
        /// </summary>
        /// <param name="tPlayerName"></param>
        /// <returns></returns>
        public static MultiplayerRequest LeaveRoom(Action <LeaveRoomResult> tOnRoomLeft)
        {
            if (m_Instance == false || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.LeaveRoom(tOnRoomLeft, tRequest));
            return(tRequest);
        }
        /// <summary>
        /// 何等かの情報を受信するまで待つ(待ち受け中にエラーが発生した場合はデータ無し状態のコールバックが発生する)
        /// </summary>
        /// <param name="tOnRoomLeft"></param>
        /// <returns></returns>
        public static MultiplayerRequest Receive(Action <bool, int, System.Object[]> tOnRecievied)
        {
            if (m_Instance == false || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.Receive(tOnRecievied, tRequest));
            return(tRequest);
        }
        /// <summary>
        // ランダムにルームに入室する(将来的に条件指定に対応する)
        /// </summary>
        /// <param name="tPlayerName"></param>
        /// <returns></returns>
        public static MultiplayerRequest JoinRandomRoom(Action <JoinRoomResult, int[]> tOnRoomJoined = null, Action <int, bool> tOnRoomStatusChanged = null, Action <int> tOnRoomHostChanged = null)
        {
            if (m_Instance == false || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.JoinRandomRoom(tOnRoomJoined, tOnRoomStatusChanged, tOnRoomHostChanged, tRequest));
            return(tRequest);
        }
        /// <summary>
        // ルームに入室または作成する
        /// </summary>
        /// <param name="tPlayerName"></param>
        /// <returns></returns>
        public static MultiplayerRequest JoinOrCreateRoom(string tRoomName, int tMaxPlayer = 0, bool tVisible = true, bool tOpen = true, string tPassword = null, string tComment = null, string tLobbyName = null, Action <JoinOrCreateRoomResult, int[]> tOnRoomJoinedOrCreated = null, Action <int, bool> tOnRoomStatusChanged = null, Action <int> tOnRoomHostChanged = null)
        {
            if (m_Instance == false || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.JoinOrCreateRoom(tRoomName, tMaxPlayer, tVisible, tOpen, tPassword, tComment, tLobbyName, tOnRoomJoinedOrCreated, tOnRoomStatusChanged, tOnRoomHostChanged, tRequest));
            return(tRequest);
        }
        //-----------------------------------

        /// <summary>
        // ロビーに入室または作成する
        /// </summary>
        /// <param name="tPlayerName"></param>
        /// <returns></returns>
        public static MultiplayerRequest JoinLobby(string tLobbyName, Action <JoinLobbyResult> tOnLobbyJoined = null, Action <MultiplayerRoomData[]> tOnLobbyStatusChanged = null)
        {
            if (m_Instance == false || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.JoinLobby(tLobbyName, tOnLobbyJoined, tOnLobbyStatusChanged, tRequest));
            return(tRequest);
        }
        //-----------------------------

        /// <summary>
        /// サーバと切断する
        /// </summary>
        /// <param name="tOnDisconnected"></param>
        /// <returns></returns>
        public static MultiplayerRequest DisconnectServer(Action <DisconnectServerResult> tOnDisconnected = null)
        {
            if (m_Instance == false || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.DisconnectServer(tOnDisconnected, tRequest));
            return(tRequest);
        }
        //-----------------------------------------------------------

        /// <summary>
        // サーバに接続する
        /// </summary>
        /// <param name="tPlayerName"></param>
        /// <returns></returns>
        public static MultiplayerRequest ConnectServer(string tServerName, string tDefaultLobbyName = "DefaultLobby", Action <ConnectServerResult> tOnConnected = null, Action tOnDisconnectedFromServer = null, Action <MultiplayerRoomData[]> tOnLobbyStatusChanged = null)
        {
            if (m_Instance == false || m_Instance.m_Controller == null)
            {
                return(null);
            }

            MultiplayerRequest tRequest = new MultiplayerRequest();

            m_Instance.StartCoroutine(m_Instance.m_Controller.ConnectServer(tServerName, tDefaultLobbyName, tOnConnected, tOnDisconnectedFromServer, tOnLobbyStatusChanged, tRequest));
            return(tRequest);
        }