Joyce | Дата: Четверг, 27 Сентября 2018, 18:13 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Здравствуйте. Уже неделю пробую сделать так, чтобы по нажатию кнопки играть в Unity(С Match Maker) создавался матч, если других нету, или игрок присоединялся к существующему матчу, если он есть. Попытки не увенчались успехом, поэтому потеряв надежду я обращаюсь сюда. В срипте есть 2 public void`а, один создает матч, другой подключается к существуещему, если он есть, но они вешаются на разные кнопки, а мне надо чтобы было на одной. И можно ли повесить сразу эти два public void`а на одну кнопку и они будут работать так, как мне надо , или рандомно, или будеть выполняться только первый public void, который висит ? Сам скрипт:Код using System.Collections; using System.Collections.Generic; using UnityEngine.Networking; using UnityEngine.Networking.Match; using UnityEngine; using UnityEngine.UI;
public class MatchMakerLobby : NetworkBehaviour { string matchName; public GameObject match; public Canvas canv; public Transform tochka; GameObject matchH; string matchFind;
void Start() { NetworkManager.singleton.StartMatchMaker(); string matchName = GameObject.Find("InputFieldNameMatch").transform.Find("Text").GetComponent<Text>().text; string matchFind = GameObject.Find("InputFieldNameMatch").transform.Find("Text").GetComponent<Text>().text; }
public void CreateInternetMatch(string matchName) { NetworkManager.singleton.matchMaker.CreateMatch(matchName, 4, true, "", "", "", 0, 0, OnInternetMatchCreate);
}
private void OnInternetMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) { if (success) { Debug.Log("Create match succeeded");
MatchInfo hostInfo = matchInfo; NetworkServer.Listen(hostInfo, 9000);
NetworkManager.singleton.StartHost(hostInfo);
} else { Debug.LogError("Create match failed"); } }
public void FindInternetMatch(string matchName) { NetworkManager.singleton.matchMaker.ListMatches(0, 10, matchName, true, 0, 0, OnInternetMatchList); }
private void OnInternetMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matches) { if (success) { if (matches.Count != 0) { NetworkManager.singleton.matchMaker.JoinMatch(matches[matches.Count - 1].networkId, "", "", "", 0, 0, OnJoinInternetMatch); } else { Debug.Log("No matches in requested room!"); } } else { Debug.LogError("Couldn't connect to match maker"); } }
private void OnJoinInternetMatch(bool success, string extendedInfo, MatchInfo matchInfo) { if (success) {
MatchInfo hostInfo = matchInfo; NetworkManager.singleton.StartClient(hostInfo); } else { Debug.LogError("Join match failed"); } } }
|
|
| |
Reng | Дата: Суббота, 29 Сентября 2018, 16:16 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| С Match Maker я не знаком, но постараюсь помочь.
Может нужно найти скрипт который вызывает методы CreateInternetMatch и FindInternetMatch. А в нём изменить код, чтобы сначала вызывался FindInternetMatch, а если матч не нашёлся тогда вызывался CreateInternetMatch.
Или эти методы одновременно вызывает button(on Click)?
Я думаю дело в кнопке или в скрипте который на ней висит.
Сообщение отредактировал Reng - Суббота, 29 Сентября 2018, 16:20 |
|
| |