- Home /
Question by
Morga121 · Jun 24, 2014 at 06:12 PM ·
networking
Network problem
The network status isn't changed when 'Running as client. No player ID set yet.' and 'Connected to 192.168.1.100:27017' texts are typed in the console and OnConnectedToServer isn't called .(Status is Network.isServer and Network.isClient) Here's the code :
using UnityEngine;
using System.Collections;
public class Networking : MonoBehaviour {
public string gameName;//Server Name
public string typeName;//Game Name
public string comment;
public int maxConnections;
public int port;
public int refreshRequestLength;
public Transform[] spawnSpots;
public GameObject _Player;
public GameObject[] publicCameras;
public HostData connectedHostdata;
public enum statuses{Offline ,Client ,Server};
public statuses status;
HostData[] hostData;
void Update()
{
if (Network.isClient && !Network.isServer)
{
status = statuses.Client;
}
else if (Network.isServer && !Network.isClient)
{
status = statuses.Server;
}
else if (!Network.isClient && !Network.isServer)
{
status = statuses.Offline;
}
}
void StartServer()
{
Network.InitializeServer (maxConnections, port, false);
}
void OnServerInitialized()
{
Debug.Log ("Server initialized");
MasterServer.RegisterHost (typeName, gameName);
}
void OnFailedToConnectToMasterServer()
{
Debug.LogError ("Failed to connect to Master Server");
}
void OnMasterServerEvent(MasterServerEvent msEvent)
{
if (msEvent == MasterServerEvent.RegistrationSucceeded)
{
Debug.Log("Registration to Master Server succesfull");
Debug.Log ("The server is started succesfully");
Spawn();
}
}
//Refresh
IEnumerator RefreshServers()
{
Debug.Log ("Refreshing...");
MasterServer.RequestHostList (typeName);
float timeEnd = Time.time + refreshRequestLength;
while (Time.time < timeEnd)
{
hostData = MasterServer.PollHostList();
yield return new WaitForEndOfFrame();
}
if (hostData != null || hostData.Length != 0)
{
Debug.Log (hostData.Length + " server(s) have been found");
}
}
void OnPlayerDisconnected(NetworkPlayer player)
{
Network.DestroyPlayerObjects (player);
Network.RemoveRPCs (player);
}
void OnConnectedToServer()
{
Debug.Log ("Connected to server (" + connectedHostdata.ip + " )");
Spawn ();
}
void OnGUI()
{
if (Network.isClient || Network.isServer)
return;
if (GUI.Button (new Rect(25 ,25 ,150 ,30) ,"Host New Server"))
{
StartServer ();
}
if (GUI.Button(new Rect(25 ,65 ,150 ,30) ,"Refresh Server List"))
{
StartCoroutine("RefreshServers");
}
if (hostData != null)
{
for (int i = 0;i < hostData.Length;i++)
{
if (GUI.Button(new Rect(Screen.width / 2 ,65 + (30 * i) ,200 ,30) ,hostData[i].gameName))
{
NetworkConnectionError error = Network.Connect(hostData[i]);
connectedHostdata = hostData[i];
}
}
}
}
void Spawn()
{
GameObject myGO =(GameObject) Network.Instantiate (_Player, spawnSpots [Random.Range (0, spawnSpots.Length)].position, Quaternion.identity, 0);
for (int i = 0;i < publicCameras.Length;i++)
{
if (publicCameras[i] != null)
{
publicCameras[i].GetComponent<Camera>().enabled = false;
publicCameras[i].GetComponent<AudioListener>().enabled = false;
}
}
myGO.GetComponent<CharacterMotor> ().enabled = true;
myGO.GetComponent<MouseLook> ().enabled = true;
myGO.transform.FindChild ("Camera").GetComponent<Camera> ().enabled = true;
myGO.transform.FindChild ("Camera").GetComponent<MouseLook> ().enabled = true;
myGO.transform.FindChild ("Camera").GetComponent<AudioListener> ().enabled = true;
}
}
Comment
Your answer
Follow this Question
Related Questions
Unity networking tutorial? 6 Answers
Networking Gun Fire Sound 1 Answer
how can I present a choice under function OnNetworkLoadedLevel 2 Answers
Multiplayer lan 1 Answer