Question by
l7ssha · Feb 01, 2016 at 04:59 PM ·
c#networkingmatchmaking
Custom Matchmaker dont work
Hello! So here's a script I created on the basis of documentary [LINK] But it does not work: D
Well, the game is formed but but I can not join him
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.UI;
using UnityEngine.Networking.Types;
using UnityEngine.Networking.Match;
using System.Collections.Generic;
public class NetworkManager_Custom : NetworkManager {
List<MatchDesc> matchList = new List<MatchDesc>();
bool matchCreated;
NetworkMatch networkMatch;
void Awake()
{
networkMatch = gameObject.AddComponent<NetworkMatch>();
}
//*******************************************
// LOCAL HOST *
//*******************************************
public void StartupHost()
{
SetPort();
NetworkManager.singleton.StartHost();
}
public void JoinGame()
{
SetIPAddress();
SetPort();
NetworkManager.singleton.StartClient();
}
public void JoinGameSingleplayer()
{
SetPortSinglePLayer();
NetworkManager.singleton.StartHost();
}
void SetIPAddress()
{
string ipAddress = GameObject.Find("InputFieldIPAddress").transform.FindChild("Text").GetComponent<Text>().text;
NetworkManager.singleton.networkAddress = ipAddress;
}
void SetPort()
{
NetworkManager.singleton.networkPort = 6969;
}
void SetPortSinglePLayer()
{
int randomPort = Random.Range (1000, 99999);
Debug.Log (randomPort);
NetworkManager.singleton.networkPort = randomPort;
}
void OnLevelWasLoaded (int level)
{
if(level == 0)
{
//SetupMenuSceneButtons();
StartCoroutine(SetupMenuSceneButtons());
}
else
{
SetupOtherSceneButtons();
}
}
/*/**********************
* SETUP *
* BUTTONS *
/************************/
IEnumerator SetupMenuSceneButtons()
{
yield return new WaitForSeconds(0.5f);
GameObject.Find("ButtonStartHost").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("ButtonStartHost").GetComponent<Button>().onClick.AddListener(StartupHost);
GameObject.Find("ButtonJoinGame").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("ButtonJoinGame").GetComponent<Button>().onClick.AddListener(JoinGame);
}
void SetupOtherSceneButtons()
{
GameObject.Find("ButtonDisconnect").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("ButtonDisconnect").GetComponent<Button>().onClick.AddListener(NetworkManager.singleton.StopHost);
}
//******************************************************************************************************************************
//
// MATCHAMKER HERE I HAVE PROBLEMS!!!
//
//******************************************************************************************************************************
public void CreateMatch() //HERE
{
CreateMatchRequest create = new CreateMatchRequest ();
create.name = "NewRoom";
create.size = 4;
create.advertise = true;
create.password = "";
networkMatch.CreateMatch (create, OnMatchCreate);
}
void OnGUI()
{
if (GUILayout.Button("List rooms"))
{
networkMatch.ListMatches(0, 20, "", OnMatchList);
}
if (matchList.Count > 0)
{
GUILayout.Label("Current rooms");
}
foreach (var match in matchList)
{
if (GUILayout.Button(match.name))
{
networkMatch.JoinMatch(match.networkId, "", OnMatchJoined);
}
}
}
public void OnMatchCreate(CreateMatchResponse matchResponse)
{
if (matchResponse.success)
{
Debug.Log("Create match succeeded");
matchCreated = true;
Utility.SetAccessTokenForNetwork(matchResponse.networkId, new NetworkAccessToken(matchResponse.accessTokenString));
NetworkServer.Listen(new MatchInfo(matchResponse), 9000);
}
else
{
Debug.LogError ("Create match failed");
}
}
public void OnMatchList(ListMatchResponse matchListResponse)
{
if (matchListResponse.success && matchListResponse.matches != null)
{
networkMatch.JoinMatch(matchListResponse.matches[0].networkId, "", OnMatchJoined);
}
}
public void OnMatchJoined(JoinMatchResponse matchJoin)
{
if (matchJoin.success)
{
Debug.Log("Join match succeeded");
if (matchCreated)
{
Debug.LogWarning("Match already set up, aborting...");
return;
}
Utility.SetAccessTokenForNetwork(matchJoin.networkId, new NetworkAccessToken(matchJoin.accessTokenString));
NetworkClient myClient = new NetworkClient();
myClient.RegisterHandler(MsgType.Connect, OnConnected);
myClient.Connect(new MatchInfo(matchJoin));
}
else
{
Debug.LogError("Join match failed");
}
}
public void OnConnected(NetworkMessage msg)
{
Debug.Log("Connected!");
}
}
Comment
Your answer
Follow this Question
Related Questions
uNet: Failed to send internal buffer 0 Answers
Join the oldest match (world wide) 0 Answers
Unet local matchmaking 0 Answers
How can I read In a twitter # 1 Answer