Не изменяется переменная C#

Метод SetGuns не может изменить переменную. тип переменных Gun

protected virtual void Awake()
{
    var test = Instantiate(GameManager.Knife);
    SlotKnife = test.GetComponent<Gun>();
// False False
// Переменная изменятся
    Debug.Log($"{SlotKnife == null} {test.GetComponent<Gun>() == null}");
}

public void SetGuns()
{
    var test = GameManager.InstantiateGun(GameManager.Knife);
    SlotMainGun = test;
// True False
// Переменная НЕ изменятся
    Debug.Log($"{SlotMainGun == null} {test == null}");
    SlotSecondaryGun = GameManager.InstantiateGun(GameManager.Glock);
    SlotKnife = GameManager.InstantiateGun(GameManager.Knife);
}
//Класс GameManager
    public static Gun InstantiateGun(GameObject prefab)
    {
        GameObject spawnedGun = Instantiate(prefab);
        NetworkServer.Spawn(spawnedGun);

        Gun gunComponent = spawnedGun.GetComponent<Gun>();
// выведет ошибку если возвращаемое значение null (в консоле ничего нет)
        if (gunComponent == null) Debug.LogError("Gun component is null!");
        return gunComponent;
    }

//Класс NetManager
//этот метод спавнит игрока
public void ServerAddPlayer()
{
    ...
    logicBase.SetGuns();
}

Ответы (1 шт):

Автор решения: rastrey

В NetManager вместо

LogicBase logicBase = player.GetComponent<LogicBase>();

надо было написать

LogicBase logicBase = player.GetComponent<TeamShooter>();
→ Ссылка