hey i am following the tutorial but i am facing a problem here , the problem is
NullReferenceException: Object reference not set to an instance of an object
MainManager.Menu_Main () (at Assets/Scripts/MainManager.cs:47)
MainManager.OnGUI () (at Assets/Scripts/MainManager.cs:23)
my both script are
using UnityEngine;
using System.Collections;
public class MainManager : MonoBehaviour {
public string CurrentMenu;
public string MatchName;
public string MatchPassword;
public int MatchMaxPlayers = 32 ;
private Vector2 ScrollLobby = Vector2.zero ;
void Start()
{
CurrentMenu = “Main”;
MatchName = “match name” + Random.Range(0,5000);
}
void OnGUI()
{
if(CurrentMenu == “Main”)
Menu_Main();
if(CurrentMenu == “Lobby”)
Menu_Lobby();
if(CurrentMenu == “Host”)
Menu_HostGame();
}
public void NavigateTo(string nextmenu)
{
CurrentMenu = nextmenu; //stores the value of current menue
}
private void Menu_Main()
{
if(GUI.Button(new Rect(10, 20, 200, 50),“Host game”))
{
NavigateTo(“Host”);
}
if(GUI.Button(new Rect(10, 70, 200, 50),“Refresh”))
{
MasterServer.RequestHostList(“DeathMatch”);
}
MultiplayerManager.instance.PlayerName = GUI.TextField(new Rect(300, 20, 150, 50),MultiplayerManager.instance.PlayerName);
GUI.Label(new Rect(220, 20, 150, 50),"Player Name");
if(GUI.Button(new Rect(460, 10, 100, 30),"Save Name"))
{
PlayerPrefs.SetString("PlayerName",MultiplayerManager.instance.PlayerName);
}
GUILayout.BeginArea(new Rect(Screen.width - 400 ,0,400, Screen.height),"Server List","Box");
foreach(HostData match in MasterServer.PollHostList())
{
GUILayout.BeginHorizontal("BOX");
GUILayout.Label(match.gameName);
if(GUILayout.Button ("Connect"))
{
Network.Connect(match);
}
GUILayout.EndHorizontal();
}
GUILayout.EndArea();
}
private void Menu_HostGame()
{
if(GUI.Button(new Rect(10, 20, 200, 50),“Back”))
{
NavigateTo(“Main”);
}
if(GUI.Button(new Rect(10, 70, 200, 50),“Start Server”))
{
MultiplayerManager.instance.StartServer(MatchName, MatchPassword,MatchMaxPlayers);
}
GUI.Label(new Rect(220,10,130,30),“Match Name”);
MatchName = GUI.TextField(new Rect(400,10,200,30),MatchName);
GUI.Label(new Rect(220,40,130,30),"Match Password");
MatchPassword = GUI.PasswordField(new Rect(400,40,200,30),MatchPassword,'*');
GUI.Label(new Rect(220,70,130,30),"Match Max Players");
GUI.Label(new Rect(400,70,200,30),MatchMaxPlayers.ToString());
MatchMaxPlayers = Mathf.Clamp(MatchMaxPlayers ,8,32);
if(GUI.Button(new Rect(425,70,25,30),"+"))
MatchMaxPlayers +=2;
if(GUI.Button (new Rect(450,70,25,30),"-"))
MatchMaxPlayers -=2;
}
private void Menu_Lobby()
{
ScrollLobby = GUILayout.BeginScrollView(ScrollLobby,GUILayout.MaxWidth(200));
foreach(MPPlayer pl in MultiplayerManager.instance.PlayerList)
{
GUILayout.Box(pl.PlayerName);
}
GUILayout.EndScrollView();
}
void OnServerInitialized()
{
NavigateTo(“Lobby”);
}
void OnConnectedToServer()
{
NavigateTo(“Lobby”);
}
}
and 2nd script MultiplayerManager
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class MultiplayerManager : MonoBehaviour
{
public static MultiplayerManager instance ;
private string MatchName = " ";
private string MatchPassword = " ";
private int MatchMaxUsers = 32;
public string PlayerName = "Ali" ;
public List< MPPlayer> PlayerList = new List();
void start()
{
instance = this;
PlayerName = PlayerPrefs.GetString ("PlayerName");
}
public void StartServer(string servername , string serverpassword, int maxusers)
{
MatchName = servername;
MatchPassword = serverpassword;
MatchMaxUsers = maxusers;
Network.InitializeServer(MatchMaxUsers,2550,false);
MasterServer.RegisterHost("Death Match",MatchName,"");
//Network.InitializeSecurity();
}
void OnServerInitialized()
{
Server_PlayerJoinRequest(PlayerName,Network.player);
}
void OnConnectedToServer()
{
networkView.RPC("Server_PlayerJoinRequest",RPCMode.Server,PlayerName,Network.player);
}
void OnPlayerDisconnected(NetworkPlayer id)
{
networkView.RPC("Client_RemovePlayer",RPCMode.All, id);
}
[RPC]
void Server_PlayerJoinRequest(string playername, NetworkPlayer view)
{
networkView.RPC("client_AddPlayerToList",RPCMode.All, playername, view);
}
[RPC]
void client_AddPlayerToList(string playername, NetworkPlayer view)
{
MPPlayer tempplayer = new MPPlayer();
tempplayer.PlayerName = playername;
tempplayer.PlayerNetwork = view;
PlayerList.Add(tempplayer);
}
[RPC]
void Client_RemovePlayer(NetworkPlayer view)
{
MPPlayer temppl = null;
foreach(MPPlayer pl in PlayerList)
{
if(pl.PlayerNetwork == view)
{
temppl = pl;
}
}
if(temppl != null)
{
PlayerList.Remove(temppl);
}
}
}
public class MPPlayer
{
public string PlayerName= “”;
public NetworkPlayer PlayerNetwork;
}