public void Enable(float duration = 0f) { foreach (Renderer childRenderer in GetComponentsInChildren <Renderer>()) { if (childRenderer != null) { foreach (Material mat in childRenderer.materials) { if (mat.shader.name == "dissolve") { StartCoroutine(UnDissolve(mat, duration > 0 ? duration : DefaultDuration)); } else { FadeOut fade = childRenderer.gameObject.GetComponent <FadeOut>(); if (!fade) { fade = childRenderer.gameObject.AddComponent <FadeOut>(); } fade.StartFadeIn(0, 2); } } } } }