J'essaie personnalisé NetworkManager
mais il continue à donnerPourquoi mon singleton est-il nul?
NullReferenceException
... dans la commande NetworkManager.singleton.StartHost();
le problème est à la ligne NetWorkManager.Singleton.StartHost();
dans le auj StartGame();
toujours revenir
... et je ne sais pas pourquoi ça arrive
Voici le code.
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using UnityEngine.UI;
public class NetManager : NetworkManager {
public Transform Bombeiro, Cnen, Policial, Suspeito,IaTeamPlayer;
public string ServidorIP, NomeUsuario;
private GameObject WayPoint;
public int GrupoAvatar;
public bool IniciarServidor;
public GameObject Lacamera,menu;
private Transform IA;
private MandaRad recptor;
private SobeRampa CodigoSubida;
public GameObject[] BombeiroSpawnPoints;
public GameObject[] PolicialSpawnPoints;
public GameObject[] SuspeitoSpawnPoints;
public GameObject[] CnenSpawnPoints;
private GameObject[] pedestres;
GameObject spawnPos;
void Awake()
{
BombeiroSpawnPoints = GameObject.FindGameObjectsWithTag("spawnBombeiroTeam");
PolicialSpawnPoints = GameObject.FindGameObjectsWithTag("spawnPolicialTeam");
SuspeitoSpawnPoints = GameObject.FindGameObjectsWithTag ("spawnSuspeitoTeam");
CnenSpawnPoints = GameObject.FindGameObjectsWithTag ("spawnCnemTeam");
}
public void ServerIni (bool iniciar)
{
IniciarServidor = iniciar;
}
public void PegaCampoIP(GameObject IP)
{
if (IP.GetComponent<InputField>().text == "")
ServidorIP = IP.GetComponent<InputField>().placeholder.GetComponent<Text>().text;
else
ServidorIP = IP.GetComponent<InputField>().text;
}
public void PegaCampoNome(GameObject Nome)
{
if (Nome.GetComponent<InputField>().text == "")
NomeUsuario = Nome.GetComponent<InputField>().placeholder.GetComponent<Text>().text;
else
NomeUsuario = Nome.GetComponent<InputField>().text;
}
public void EscolherAvatar (int grupo)
{
if (GrupoAvatar == 0)
{
spawnPos = BombeiroSpawnPoints[Random.Range(0, BombeiroSpawnPoints.Length)];
base.playerPrefab = Bombeiro.gameObject;
base.spawnPrefabs.RemoveAt(0);
base.spawnPrefabs.Add(spawnPos);
}
else if (GrupoAvatar == 1)
{
spawnPos = CnenSpawnPoints[Random.Range(0, CnenSpawnPoints.Length)];
base.playerPrefab = Cnen.gameObject;
base.spawnPrefabs.RemoveAt(0);
base.spawnPrefabs.Add(spawnPos);
}
else if (GrupoAvatar == 2)
{
spawnPos = PolicialSpawnPoints[Random.Range(0, PolicialSpawnPoints.Length)];
base.playerPrefab = Policial.gameObject;
base.spawnPrefabs.RemoveAt(0);
base.spawnPrefabs.Add(spawnPos);
}
else if (GrupoAvatar == 3)
{
spawnPos = SuspeitoSpawnPoints[Random.Range(0, SuspeitoSpawnPoints.Length)];
base.playerPrefab = Suspeito.gameObject;
base.spawnPrefabs.RemoveAt(0);
base.spawnPrefabs.Add(spawnPos);
}
if (IniciarServidor)
StartGame();
else
JoinGame();
}
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
{
GameObject player = (GameObject)Instantiate (base.playerPrefab, spawnPos.transform.position, spawnPos.transform.rotation);
NetworkServer.AddPlayerForConnection (conn, player, playerControllerId);
}
public void StartGame()
{
NetworkManager.singleton.StartHost();
}
public void JoinGame()
{
NetworkManager.singleton.networkAddress = ServidorIP;
NetworkManager.singleton.StartClient();
}
}
Il a été fait à l'unité 5 Alors, comment je peux résoudre ce ??
Je ne pense pas que vous devriez dérivez un nouveau type de 'NetworkManager' en premier lieu. – MickyD
La propriété singleton est une propriété statique de la classe de base. Il n'est pas clair comment il est instancié. Il est également presque certain que même s'il est instancié, il s'agira d'une instance de la classe de base (NetworkManager) au lieu de votre classe dérivée (NetManager). Semble à la mauvaise direction/architecture pour moi. –
Copie possible de [Qu'est-ce qu'une exception NullReferenceException et comment la réparer?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –