You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#开发:Yield Return失效?高分删除提示文本无法隐藏

Unity高分删除提示文本无法自动隐藏的解决方法

问题根源

  1. 启动协程后立刻执行gameObject.SetActive(false),会直接禁用当前脚本所在的GameObject,导致协程被强制终止,根本跑不到延迟隐藏的逻辑。
  2. HideTextAfterDelay协程里没有编写任何隐藏successfullyDeleted文本的代码,就算协程正常执行也不会有效果。

修正后的代码

public GameObject successfullyDeleted;

public void DeleteHighscore()
{
    // 重置高分并确保数据写入本地
    PlayerPrefs.SetInt("highscore", 0);
    PlayerPrefs.Save();

    // 显示提示文本(如果初始状态为隐藏)
    successfullyDeleted.SetActive(true);

    // 启动延迟隐藏协程
    StartCoroutine(HideTextAfterDelay(5));

    // 不要禁用当前脚本所在对象,否则协程会直接终止
    // gameObject.SetActive(false);
}

IEnumerator HideTextAfterDelay(float delay)
{
    Debug.Log("HideTextAfterDelay called with delay: " + delay);
    yield return new WaitForSeconds(delay);

    // 延迟后执行隐藏操作
    successfullyDeleted.SetActive(false);
}

额外注意事项

  • 确认Unity Inspector中successfullyDeleted变量已正确关联到提示文本的GameObject。
  • 如果「Confirm」按钮和当前脚本在同一GameObject上,需单独给确认按钮设置引用,通过该引用控制按钮隐藏,不要直接禁用整个脚本所在对象。

内容的提问来源于stack exchange,提问作者Kenan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:37:38