Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

why isn't this working for me? what am i missing here?

Discussion in 'Multiplayer' started by pieterpret, Jan 10, 2015.

  1. pieterpret

    pieterpret

    Joined:
    Jun 2, 2013
    Posts:
    1
    i very new to unity networking api and not sure as to why i keep getting the errors. am i missing something somewhere or not?

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine.UI;

    public class networkManager : MonoBehaviour
    {

    public Rect hostButton = new Rect (10, 20, 40, 30);
    public Rect refreshButton = new Rect (10, 30, 40, 30);
    [SerializeField]
    string
    registeredGameName = "my Game";
    public string gameName = "test";
    public Text connectionText;
    public InputField nameTextBlock;
    [SerializeField]
    GameObject
    serverWindow;
    public GameObject spawnButton;
    public Text gameNameTextBlock;
    bool isRefreshing = false;
    public float refreshRequestLength = 3.0f;
    HostData[] hostData;
    [SerializeField]
    GameObject
    playerObject;
    public GameObject sceneCamera;

    void Start ()
    {
    gameName = PlayerPrefs.GetString ("gameName");
    gameNameTextBlock.text = gameName;
    StartCoroutine ("RefreshHostList");
    spawnButton.SetActive (false);
    }

    void Update ()
    {
    //registeredGameName = servernameTextBlock.text;
    gameName = nameTextBlock.text;
    //serverNameTextBlock.text = registeredGameName;
    gameNameTextBlock.text = gameName;

    }


    public void StartServer ()
    {
    Network.InitializeServer (16, 25002, false);
    MasterServer.RegisterHost (registeredGameName, gameName);
    PlayerPrefs.SetString ("gameName", gameName);
    serverHostWindow ();

    }

    void OnServerInitialized ()
    {
    Debug.Log ("Server initialized and ready");
    connectionText.text = "Server initialized and ready";
    Network.Instantiate (playerObject, new Vector3 (0, 3.5f, 0), Quaternion.identity, 0);
    sceneCamera.SetActive (false);
    }

    void OnMasterServerEvent (MasterServerEvent masterServerEvent)
    {
    if (masterServerEvent == MasterServerEvent.RegistrationSucceeded) {
    connectionText.text = "registration succesfull";
    }
    }

    public IEnumerator RefreshHostList ()
    {

    connectionText.text = "Refreshing";
    float timeStarted = Time.time;
    float timeEnd = Time.time + refreshRequestLength;
    MasterServer.RequestHostList (registeredGameName);

    while (Time.time < timeEnd) {

    hostData = MasterServer.PollHostList ();
    yield return new WaitForEndOfFrame ();
    }

    if (hostData == null || hostData.Length == 0) {
    connectionText.text = " no servers found";
    } else {
    connectionText.text = "servers found: " + hostData.Length;
    }

    }

    public void serverRefresh ()
    {
    StartCoroutine ("RefreshHostList");
    }

    void serverHostWindow ()
    {
    serverWindow.SetActive (false);
    }

    public void spawnPlayer ()
    {
    //connectionText.text = "spawning player";
    Debug.Log ("spawning player");
    Network.Instantiate (Resources.Load ("Resources/FirstPersonCharacterController"), new Vector3 (0, 2.5f, 0), Quaternion.identity, 0);
    }
    // Called on the server whenever a new
    // player has successfully connected.
    void OnPlayerConnected (NetworkPlayer player)
    {
    spawnPlayer ();
    sceneCamera.SetActive (false);
    }



    // Called on the client when you have successfully
    // connected to a server.
    void OnConnectedToServer ()
    {
    connectionText.text = "connected";
    Debug.Log ("connected");
    spawnPlayer ();
    }

    // Called on the server whenever a player
    // disconnected from the server.
    void OnPlayerDisconnected (NetworkPlayer player)
    {
    Debug.Log ("player disconnected: " + player.ipAddress + player.port);
    Network.RemoveRPCs (player);
    Network.DestroyPlayerObjects (player);
    }

    // Called on the client when the connection
    // was lost or you disconnected from the
    // server.
    void OnDisconnectedFromServer (NetworkDisconnection info)
    {
    Network.Disconnect ();
    serverWindow.SetActive (true);
    sceneCamera.SetActive (true);

    }

    // Called on the client when a connection
    // attempt fails for some reason.
    void OnFailedToConnect (NetworkConnectionError error)
    {
    Debug.Log ("connection failed");
    Network.Disconnect ();
    connectionText.text = "failed to connect";
    }
    // Called on objects which have been network
    // instantiated with Network.Instantiate
    void OnNetworkInstantiate (NetworkMessageInfo info)
    {

    }

    void OnGUI ()
    {
    if (Network.isClient || Network.isServer)
    return;
    /*
    if (GUI.Button (hostButton, "host")) {
    StartServer ();
    PlayerPrefs.SetString ("gameName", gameName);
    serverHostWindow ();
    }


    if (GUI.Button (refreshButton, "refresh")) {
    StartCoroutine ("RefreshHostList");
    }

    if (GUI.Button (new Rect (20, 0, 120, 20), "save settings")) {
    PlayerPrefs.Save ();
    }
    */
    if (hostData != null) {
    for (int i = 0; i < hostData.Length; i++) {
    if (GUI.Button (new Rect (Screen.width / 2, 65f + (30f + i), 120, 25), hostData .gameName)) {
    Network.Connect (hostData );
    serverHostWindow ();
    spawnButton.SetActive (true);
    }
    }
    }
    }

    }


    console output:
    NullReferenceException
    UnityEngine.Network.Instantiate (UnityEngine.Object prefab, Vector3 position, Quaternion rotation, Int32 group) (at C:/BuildAgent/work/d63dfc6385190b60/artifacts/EditorGenerated/Networking.cs:628)
    networkManager.spawnPlayer () (at Assets/scripts/networkManager.cs:108)
    UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at C:/BuildAgent/work/d63dfc6385190b60/Runtime/Export/UnityEvent.cs:110)
    UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/BuildAgent/work/d63dfc6385190b60/Runtime/Export/UnityEvent.cs:575)
    UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/BuildAgent/work/d63dfc6385190b60/Runtime/Export/UnityEvent.cs:717)
    UnityEngine.Events.UnityEvent.Invoke () (at C:/BuildAgent/work/d63dfc6385190b60/Runtime/Export/UnityEvent_0.cs:53)
    UnityEngine.UI.Button.Press () (at C:/BuildAgent/work/d63dfc6385190b60/Extensions/guisystem/guisystem/UI/Core/Button.cs:36)
    UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/BuildAgent/work/d63dfc6385190b60/Extensions/guisystem/guisystem/UI/Core/Button.cs:45)
    UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/BuildAgent/work/d63dfc6385190b60/Extensions/guisystem/guisystem/EventSystem/ExecuteEvents.cs:52)
    UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/BuildAgent/work/d63dfc6385190b60/Extensions/guisystem/guisystem/EventSystem/ExecuteEvents.cs:269)
    UnityEngine.EventSystems.EventSystem:Update()
     
  2. unityuser1324235141

    unityuser1324235141

    Joined:
    Apr 5, 2013
    Posts:
    44
    pls code tags. ty.