using UnityEngine; namespace DestroyIt { /// /// This is a helper script that listens to a Destructible object's RepairedEvent and runs additional code when the object is repaired. /// Put this script on a GameObject that has the Destructible script. /// [RequireComponent(typeof(Destructible))] public class WhenRepaired : MonoBehaviour { private Destructible _destObj; private void Start() { // Try to get the Destructible script on the object. If found, attach the OnRepaired event listener to the RepairedEvent. _destObj = gameObject.GetComponent(); if (_destObj != null) _destObj.RepairedEvent += OnRepaired; } private void OnDisable() { // Unregister the event listener when disabled/destroyed. Very important to prevent memory leaks due to orphaned event listeners! if (_destObj == null) return; _destObj.RepairedEvent -= OnRepaired; } /// When the Destructible object is repaired, the code in this method will run. private void OnRepaired() { Debug.Log($"{_destObj.name} was repaired {_destObj.LastRepairedAmount} hit points"); } } }