Если вы передадите ссылку Component
на Destroy
, она уничтожит только соответствующий компонент, но оставит GameObject
нетронутым
Объектobj будет уничтожен сейчас или если время будет указано через t секунд. Если obj равен Component
, он удалит компонент из GameObject
и уничтожит его .Если obj равен GameObject
, он уничтожит GameObject
, все его компоненты и все дочерние элементы преобразования GameObject
.
Destroy(damageDealer.GetComponnet<Rigidbody2D>());
Если вы сделаете это довольно часто,может быть, лучше сохранить эту ссылку уже в Awake
компонента DamageDealer
, а затем передать его как
public class DamageDealer : MonoBehaviour
{
// if possible already reference this via the Inspector
[SerializeField] private Rigidbody2D rigidbody;
// This is a read-only property returning the value of rigidbody
public Rigidbody2D Rigidbody => rigidbody;
private void Awake()
{
if(!rigidbody) rigidbody = GetComponnet<Rigidbody2D>();
...
}
...
}
, а затем вы можете просто сделать
Destroy(damageDealer.Rigidbody);