public void CreateInternetMatch(MatchRoomInfo info, Action onSuccess, Action onFailed) { NetworkManager.singleton.StartMatchMaker(); var matchName = info.roomName; var matchAdvertise = true; //NetworkMatch.ListMatchesで帰ってくるList<MatchInfoSnapshot>に、このマッチを含めるかどうか var matchPassword = info.password; //マッチのパスワード var publicClientAddress = ""; //クライアントがインターネット経由で直接接続するためのネットワークアドレス var privateClientAddress = ""; //クライアントが LAN 経由で直接接続するためのネットワークアドレス var eloScoreForMatch = 0; //いわゆるスキルレート。全クライアントが0だとランダムになる var requestDomain = 0; //クライアントバージョンを区別するための番号 NetworkManager.singleton.matchMaker.CreateMatch(matchName, MATCH_SIZE, matchAdvertise, matchPassword, publicClientAddress, privateClientAddress, eloScoreForMatch, requestDomain, (success, extendedInfo, matchInfo) => { if (success) { MatchInfo hostInfo = matchInfo; NetworkServer.Listen(hostInfo, 9000); NetworkManager.singleton.StartHost(hostInfo); onShowLoadingText.SafeInvoke("ルーム作成に成功しました"); onSuccess.SafeInvoke(); } else { onShowLoadingText.SafeInvoke("ルーム作成に失敗しました"); onFailed.SafeInvoke(); } }); }
private void JoinMatch(UnityEngine.Networking.Types.NetworkID networkId, MatchRoomInfo roomInfo, Action onSuccess, Action onFailed) { NetworkManager.singleton.matchMaker.JoinMatch(networkId, roomInfo.password, "", "", 0, 0, (success, extendedInfo, match) => { if (success) { MatchInfo hostInfo = match; NetworkManager.singleton.StartClient(hostInfo); onShowLoadingText.SafeInvoke("ルーム参加に成功しました"); onSuccess.SafeInvoke(); } else { onShowLoadingText.SafeInvoke("ルームに参加できませんでした"); onFailed.SafeInvoke(); } }); }
public void EnterInternetMatch(MatchRoomInfo info, Action onSuccess, Action onFailed) { NetworkManager.singleton.StartMatchMaker(); var startPageNumber = 0; //リストし始めるページ var matchNameFilter = info.roomName; //*<matchNameFilter>*に該当するマッチが検索される var filterOutPrivateMatchesFromResults = false; //プライベートマッチを検索結果に含めないか var eloScoreTarget = 0; //検索するときのスキルレート var requestDomain = 0; //クライアントバージョンを区別するための番号 NetworkManager.singleton.matchMaker.ListMatches(startPageNumber, RESULT_PAGE_SIZE, matchNameFilter, filterOutPrivateMatchesFromResults, eloScoreTarget, requestDomain, (success, extendedInfo, matches) => { if (success) { if (matches.Count == 0) { onShowLoadingText.SafeInvoke("該当するルームがありませんでした"); onFailed.SafeInvoke(); } else { #if UNITY_EDITOR foreach (var match in matches) { Debug.LogFormat("roomName: {0}", match.name); } #endif var earliestCreatedMatch = matches.Find(v => v.currentSize != v.maxSize); JoinMatch(earliestCreatedMatch.networkId, info, onSuccess, onFailed); } } else { onShowLoadingText.SafeInvoke("ルームリストの取得に失敗しました"); onFailed.SafeInvoke(); } }); }