using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class NetworkManager : MonoBehaviour
{
private string MSName = "SurvivorV2020_16123";
private HostData[] hostData;
public GameObject[] Maps;
public GameObject[] Characters;
public static GameObject myPlayer;
private int map;
private int character;
public static string Name = "";
public List<string> Jogadores = new List<string>();
//Administraçao de salas
void NovaSala()
{
Network.InitializeServer(16, 21022, !Network.HavePublicAddress());
MasterServer.RegisterHost(MSName, "ServerTest");
Debug.Log("Server Criado.");
}
void Actualizar()
{
MasterServer.RequestHostList(MSName);
hostData = MasterServer.PollHostList();
}
//Spawn de mapas e jogadores
void Spawn(int mapa, int jogador)
{
myPlayer = Network.Instantiate(Characters[jogador], new Vector3(0, 2, 0), Quaternion.identity, 0) as GameObject;
Instantiate(Maps[mapa], new Vector3(0, 0, 0), Quaternion.identity);
}
//Eventos
void OnConnectedToServer()
{
//Spawn(0, 0);
networkView.RPC("addPlayer", RPCMode.AllBuffered, Name);
}
void OnServerInitialized()
{
//Spawn(0, 0);
networkView.RPC("addPlayer", RPCMode.AllBuffered, Name);
}
void OnDisconnectedFromServer()
{
Network.Destroy(myPlayer);
}
//UI do jogo
void OnGUI()
{
if (Network.isClient || Network.isServer)
{
Lobby();
return;
}
Actualizar();
GUILayout.BeginArea(new Rect(5, 5, Screen.width - 10, Screen.height - 10), "", "box");
GUILayout.BeginHorizontal();
{
if (GUILayout.Button("Nova Sala"))
NovaSala();
Name = GUILayout.TextField(Name, GUILayout.Width(200));
if (GUILayout.Button("Aplicar"))
{
networkView.name = Name;
}
}
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal("box");
{
if (hostData != null)
{
foreach (HostData sala in hostData)
{
GUILayout.Label(sala.gameName + sala.connectedPlayers);
if (GUILayout.Button("Connect"))
Network.Connect(sala);
}
}
}
GUILayout.EndHorizontal();
GUILayout.EndArea();
}
void Lobby()
{
if (PlayerController.isSpawned) return;
GUILayout.BeginArea(new Rect(5, 5, (Screen.width / 2) - 5, Screen.height - 10), "", "box");
{
foreach(string jogador in Jogadores)
{
GUILayout.Label(jogador);
}
}
GUILayout.EndArea();
GUILayout.BeginArea(new Rect((Screen.width / 2), 5, (Screen.width / 2) - 5, Screen.height - 10), "", "box");
{
if(GUILayout.Button("Spawn"))
{
Spawn(0, 0);
}
}
GUILayout.EndArea();
}
[RPC]
void addPlayer(string name)
{
Jogadores.Add(name);
networkView.name = name;
}
}
ERROR
IndexOutOfRangeException: Array index is out of range.
fn_NetConfig.Spawn (Int32 mapa, Int32 jogador) (at Assets/ProjetoDefinitivo/Scripts/NetWork/fn_NetConfig.cs:37)