В основном классе оружия есть bool переменная и метод, отвечающий за деактивацию оружия. Вызывается в FixedUpdate.
if (IsPresent) {
gameobject.SetActive(true);
} else {
gameobject.SetActive(false);
}
Оружие не появляется. Само оружие - дочерний компонент weapon holder, он, (weapon holder) всегда активен.