Search Unity

Question Self initialize network variables

Discussion in 'Netcode for GameObjects' started by BruceKristelijn, Jun 17, 2022.

  1. BruceKristelijn

    BruceKristelijn

    Joined:
    Apr 28, 2017
    Posts:
    108
    So I had this weird idea to self initialize network variables. I managed to get the bool syncing but this broke all kinds of other things. I know this might be a stretch but the source code is available and sort-of followed this and sounded like a way to learn more about NGO aswell.

    This is method I followed

    This is the code I used:

    Code (CSharp):
    1.            
    2. var instance = testvar;
    3. var fieldType = instance.GetType();
    4. instance.Initialize(this);
    5.  
    6. var NetworkVariableFields = (IList)typeof(MissionBehaviour).GetField("NetworkVariableFields", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this);
    7. NetworkVariableFields.Clear();
    8.  
    9. var instanceNameProperty = fieldType.GetProperty(nameof(NetworkVariableBase.Name));
    10. var sanitizedVariableName = $"MissionNetworkVariable_{NetworkVariableFields.Count}";
    11. instanceNameProperty?.SetValue(instance, sanitizedVariableName);
    12.  
    13. NetworkVariableFields.Add(instance);