- Home /
Network manager player existance check
i have a network manager script that works connections and spawning. problem is that i have 2 player prefabs that are supposed to spawn in different locations. i want the game to check if the first one exists and then spawn the second one. however it always spawns the first one using UnityEngine; using System.Collections;
public class Networkmanager : MonoBehaviour
{
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
}
private const string typeName = "UniqueGameName";
private const string gameName = "boxing";
private void StartServer ()
{
Network.InitializeServer (4, 25000, !Network.HavePublicAddress ());
MasterServer.RegisterHost (typeName, gameName);
}
void OnServerInitialized ()
{
Debug.Log ("Server Initializied");
SpawnPlayer ();
}
void OnGUI ()
{
if (!Network.isClient && !Network.isServer) {
if (GUI.Button (new Rect (100, 100, 250, 100), "Start Server"))
StartServer ();
if (GUI.Button (new Rect (100, 250, 250, 100), "Refresh Hosts"))
RefreshHostList ();
if (hostList != null) {
for (int i = 0; i < hostList.Length; i++) {
if (GUI.Button (new Rect (400, 100 + (110 * i), 300, 100), hostList [i].gameName))
JoinServer (hostList [i]);
}
}
}
}
public GameObject playerPrefab1;
public GameObject playerPrefab2;
private void SpawnPlayer ()
{
if (GameObject.Find ("networkplayer(Clone)") == null)
Network.Instantiate (playerPrefab1, new Vector3 (0f, 0f, 0f), Quaternion.identity, 0);
else
if (GameObject.Find ("networkplayer2(Clone)") == null)
Network.Instantiate (playerPrefab2, new Vector3 (2f, 0f, 2f), Quaternion.identity, 0);
}
private HostData[] hostList;
private void RefreshHostList ()
{
MasterServer.RequestHostList (typeName);
}
void OnMasterServerEvent (MasterServerEvent msEvent)
{
if (msEvent == MasterServerEvent.HostListReceived)
hostList = MasterServer.PollHostList ();
}
private void JoinServer (HostData hostData)
{
Network.Connect (hostData);
}
void OnConnectedToServer ()
{
Debug.Log ("Server Joined");
SpawnPlayer ();
}
}
i tried
private void SpawnPlayer ()
{
if (GameObject.Find ("networkplayer(Clone)") != null)
Network.Instantiate (playerPrefab2, new Vector3 (2f, 0f, 2f), Quaternion.identity, 0);
else
if (GameObject.Find ("networkplayer2(Clone)") != null)
Network.Instantiate (playerPrefab1, new Vector3 (0f, 0f, 0f), Quaternion.identity, 0);
}
but then nothing would spawn at all
Comment
Best Answer
Answer by jeijei · Dec 21, 2014 at 08:07 PM
nevermind, fixed it using UnityEngine; using System.Collections;
public class Networkmanager : MonoBehaviour
{
public bool player1exists;
public bool player2exists;
public bool clickonce = false;
[RPC]
void player1 ()
{
if (GameObject.Find ("networkplayer(Clone)") == null)
player1exists = false;
else
player1exists = true;
}
[RPC]
void player2 ()
{
if (GameObject.Find ("networkplayer2(Clone)") == null)
player2exists = false;
else
player2exists = true;
}
void Update ()
{
if (clickonce == false) {
Screen.lockCursor = false;
Screen.showCursor = true;
}
networkView.RPC ("player1", RPCMode.All);
networkView.RPC ("player2", RPCMode.All);
}
private const string typeName = "UniqueGameName";
private const string gameName = "boxing";
private void StartServer ()
{
Network.InitializeServer (4, 25000, !Network.HavePublicAddress ());
MasterServer.RegisterHost (typeName, gameName);
}
void OnServerInitialized ()
{
Debug.Log ("Server Initializied");
}
void OnGUI ()
{
if ((Network.isClient || Network.isServer) && clickonce == false) {
if (player1exists == false) {
if (GUI.Button (new Rect (100, 100, 250, 100), "Ready")) {
SpawnPlayer ();
clickonce = true;
}
} else
if (player1exists == true && player2exists == false)
if (GUI.Button (new Rect (100, 100, 250, 100), "Ready")) {
SpawnPlayer ();
clickonce = true;
}
}
if (!Network.isClient && !Network.isServer) {
if (GUI.Button (new Rect (100, 100, 250, 100), "Start Server"))
StartServer ();
if (GUI.Button (new Rect (100, 250, 250, 100), "Refresh Hosts"))
RefreshHostList ();
if (hostList != null) {
for (int i = 0; i < hostList.Length; i++) {
if (GUI.Button (new Rect (400, 100 + (110 * i), 300, 100), hostList [i].gameName))
JoinServer (hostList [i]);
}
}
}
}
public GameObject playerPrefab1;
public GameObject playerPrefab2;
private void SpawnPlayer ()
{
if (player1exists == false) {
Network.Instantiate (playerPrefab1, new Vector3 (0f, -0.17f, 0f), Quaternion.identity, 0);
} else
if (player2exists == false) {
Network.Instantiate (playerPrefab2, new Vector3 (2f, -0.17f, 2f), Quaternion.identity, 0);
}
}
private HostData[] hostList;
private void RefreshHostList ()
{
MasterServer.RequestHostList (typeName);
}
void OnMasterServerEvent (MasterServerEvent msEvent)
{
if (msEvent == MasterServerEvent.HostListReceived)
hostList = MasterServer.PollHostList ();
}
private void JoinServer (HostData hostData)
{
Network.Connect (hostData);
}
void OnConnectedToServer ()
{
Debug.Log ("Server Joined");
}
}
Your answer
Follow this Question
Related Questions
Multiple player prefabs in the network manager? 4 Answers
Network fps swap cameras 1 Answer
Network.player giving me 0 0 Answers
Bullet wont collide for the other player (PHOTON+UNITY) 1 Answer
Identify player that is reconnecting 1 Answer