你没有保证循环 FadeTo 曾经和 t 大致等于 1f (实际上,你只知道它至少会运行一次 t = 0f )。因此,你的alpha可能永远不会低于 0.2f , 在这种情况下, Destroy 永远不会被称为。
FadeTo
t
1f
t = 0f
0.2f
Destroy
在淡入淡出循环的末尾添加一行以设置 canvas_group.alpha 到了 alpha_value :
canvas_group.alpha
alpha_value
IEnumerator<float> FadeTo(float alpha_value, float transition_time) { if (gameObject != null && gameObject.activeInHierarchy) { float alpha = canvas_group.alpha; for (float t = 0.0f; t <= 1.0f; t += Time.deltaTime / transition_time) { canvas_group.alpha = Mathf.Lerp(alpha, alpha_value, t); yield return Timing.WaitForOneFrame; } canvas_group.alpha = alpha_value; } yield break; }