Среда, 27 Ноября 2024, 05:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Создание или нахождение комнаты в Unity Match Maker.
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг