public GameObject LoadWeapon(string _name)
    {
        GameObject result;

        if (!weapons.TryGetValue(_name, out result))
        {
            result = factory.LoadWeapon(_name);
            weapons.Add(_name, result);
            return(result);
        }
        return(InstantiateGameObject(result));
    }