Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Can't populate networked list

Discussion in 'Multiplayer' started by ahamay5, Sep 8, 2021.

  1. ahamay5

    ahamay5

    Joined:
    Feb 21, 2019
    Posts:
    1
    I'm trying to create a networked list with custom structure, which would contain all the players data (currently it's just client's ID and their nickname), but I've been struggling to simply populate the list. Changing the NetworkList<> to just List<> makes it work, but I want the list to be synced with all the players.

    My custom struct:
    Code (CSharp):
    1. using MLAPI.Serialization;
    2.  
    3. public struct PlayerData : INetworkSerializable
    4. {
    5.     public ulong clientId;
    6.     public string nickname;
    7.  
    8.     public PlayerData (ulong _clientId, string _nickname)
    9.     {
    10.         clientId = _clientId;
    11.         nickname = _nickname;
    12.     }
    13.  
    14.     public void NetworkSerialize(NetworkSerializer serializer)
    15.     {
    16.         serializer.Serialize(ref clientId);
    17.         serializer.Serialize(ref nickname);
    18.     }
    19. }
    NetworkList<> initialization:

    Code (CSharp):
    1. using MLAPI;
    2. using MLAPI.NetworkVariable.Collections;
    3. using System.Text;
    4. using TMPro;
    5. using UnityEngine;
    6.  
    7. public class LoginManager : NetworkBehaviour
    8. {
    9.  
    10.     NetworkList<PlayerData> playerData = new NetworkList<PlayerData>();
    Trying to populate the list:

    Code (CSharp):
    1. playerData.Add(new PlayerData(1, "one"));
    2.         playerData.Add(new PlayerData(2, "two"));
    3.         playerData.Add(new PlayerData(3, "three"));
    4.  
    5.         Debug.Log(playerData.Count);
    The output in the playmode:



    What am I doing wrong?