Search Unity

Why do i get NullReferenceException: Object reference not set to an instance of an object

Discussion in 'Multiplayer' started by pKallv, Jan 29, 2017.

  1. pKallv

    pKallv

    Joined:
    Mar 2, 2014
    Posts:
    1,191
    I trying to use SyncListString and get this error. However, when i check all seems to be available for access. I have tried to solve this for a few weeks now and I am totally confused.

    SyncListString is available and have records
    I create and populate the SyncList in something i call "MP_GameEngine" in "OnStartServer" and it all seems to work fine.

    In MP_GameEngine, extracts:
    Code (CSharp):
    1. public SyncListString NameSyncList = new SyncListString();
    2.  
    3.  
    4. public override void OnStartServer() {
    5.     NameSyncList.Callback += ReorderCallback;
    6.  
    7. // Populating the SyncList
    8.     for (int x = 0; x < 5; x++) {
    9.         aThing = names_List [x];
    10.         NameSyncList.Add (aThing);
    11.         PrepareForSpawn (aThing);
    12.     }

    Definition in Player:
    Code (CSharp):
    1. public MP_GameEngine _engine;
    I have this code on the player that is triggered when clicking on an object, the purpose is to move the clicked object to the top of the SyncList:

    Code (CSharp):
    1. void CheckAndFixSortOrder (string _name) {
    2.  
    3.         if (_engine.NameSyncList == null) {
    4.              print("_engine.NameSyncList=NULL"+_name);
    5.         } else {
    6.              print("_engine.NameSyncList=EXISTS"+_name);
    7.         }
    8.  
    9.         print ("#2: " + _engine.NameSyncList [2]);
    10.  
    11.         Cmd_RemoveSyncList(_name);
    12.         Cmd_AddSyncList (_name);
    13.         //FixSortOrder ();
    14.         _engine.FixSortingOrder();
    15.     }
    16.  
    17.     [Command]
    18.     void Cmd_AddSyncList (string _name) {
    19.         _engine.NameSyncList.Add (_name);
    20.     }
    21.  
    22.     [Command]
    23.     void Cmd_RemoveSyncList (string _name) {
    24.         _engine.NameSyncList.Remove (_name); //<<<<<<<<<<<< ERROR
    25.     }
    The print's give the following output:

    Code (CSharp):
    1. _engine.NameSyncList = EXISTS Enemy1
    2.  
    3. #2: Enemy3
    Given that all components seems to be in place and accessible i do not understand why i get the "Object reference not set to an instance of an object" message?

    I get the following Error messages:
    Code (CSharp):
    1. NullReferenceException: Object reference not set to an instance of an object
    2. Player.Cmd_RemoveSyncList (System.String _name) (at Assets/Multiplayer/Scripts UNET/Player.cs:218)
    3. Player.InvokeCmdCmd_RemoveSyncList (UnityEngine.Networking.NetworkBehaviour obj, UnityEngine.Networking.NetworkReader reader)
    4. UnityEngine.Networking.NetworkIdentity.HandleCommand (Int32 cmdHash, UnityEngine.Networking.NetworkReader reader) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkIdentity.cs:616)
    5. UnityEngine.Networking.NetworkServer.OnCommandMessage (UnityEngine.Networking.NetworkMessage netMsg) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkServer.cs:1298)
    6. UnityEngine.Networking.NetworkConnection.HandleReader (UnityEngine.Networking.NetworkReader reader, Int32 receivedSize, Int32 channelId) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:468)
    7. UnityEngine.Networking.NetworkConnection.HandleBytes (System.Byte[] buffer, Int32 receivedSize, Int32 channelId) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:424)
    8. UnityEngine.Networking.NetworkConnection.TransportRecieve (System.Byte[] bytes, Int32 numBytes, Int32 channelId) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:576)
    9. UnityEngine.Networking.NetworkServer.OnData (UnityEngine.Networking.NetworkConnection conn, Int32 receivedSize, Int32 channelId) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkServer.cs:753)
    10. UnityEngine.Networking.NetworkServer+ServerSimpleWrapper.OnData (UnityEngine.Networking.NetworkConnection conn, Int32 receivedSize, Int32 channelId) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkServer.cs:1851)
    11. UnityEngine.Networking.NetworkServerSimple.HandleData (Int32 connectionId, Int32 channelId, Int32 receivedSize, Byte error) (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkServerSimple.cs:384)
    12. UnityEngine.Networking.NetworkServerSimple.Update () (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkServerSimple.cs:248)
    13. UnityEngine.Networking.NetworkServer.InternalUpdate () (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkServer.cs:705)
    14. UnityEngine.Networking.NetworkServer.Update () (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkServer.cs:655)
    15. UnityEngine.Networking.NetworkIdentity.UNetStaticUpdate () (at /Users/builduser/buildslave/unity/build/Extensions/Networking/Runtime/NetworkIdentity.cs:1088)
    16.