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)); }