Подумайте не полностью уничтожить gameObject, а просто установить его как неактивный и сохранить ссылку на него где-то еще:
public class Destructible : MonoBehaviour
{
// Class based on your code sample above.
public GameObject destroyedVersion;
void OnMouseDown()
{
GameObject destroyedObject = Instantiate(
destroyedVersion, transform.position, transform.rotation);
Destroyed destroyed = destroyedObject.GetComponent<Destroyed>();
destroyed.SetOrigin(this);
gameObject.SetActive(false);
}
}
public class Destroyed : MonoBehavior
{
Destructible destructible = null;
public void SetOrigin(Destructible destructible)
{
this.destructible = destructible;
}
// This method can now be called from anywhere to rebuild:
public void RebuildOrigin()
{
if (destructible != null)
{
destructible.gameObject.SetActive(true);
Destroy(gameObject);
}
}
}
Еще один подход, и он может быть более поддерживаемым, будет дать первоначальному объекту - например, зданию - энергетический уровень или какой-то неповрежденный бул, и когда он разрушается, вы меняете его внешний вид и поведение.
Удачи!