Unity中如何在动画结束后显示指定GameObject
实现特定时间后显示下一屏的方案
你可以在现有代码基础上,添加几个变量和判断逻辑来实现需求,具体操作如下:
首先在脚本里新增几个关键变量:
- 公共的
GameObject nextScreen:拖入你要显示的下一屏对象(记得在Unity编辑器里把这个对象初始设为非激活状态) - 公共的
float totalWaitTime:设置你需要等待的总时长(比如输入5代表5秒) - 私有布尔变量
hasShownNextScreen:用来标记是否已经显示过下一屏,避免重复触发
- 公共的
修改后的完整代码如下:
public RectTransform mainIcon; public float timeStep; public float oneStepAngle; public GameObject nextScreen; // 下一屏对象 public float totalWaitTime; // 总等待时长 float startTime; float totalWaitStartTime; bool hasShownNextScreen = false; // Start is called before the first frame update void Start() { startTime = Time.time; totalWaitStartTime = Time.time; // 记录加载开始的时间 // 确保下一屏初始隐藏 if(nextScreen != null) nextScreen.SetActive(false); } // Update is called once per frame void Update() { // 保留原有的图标旋转逻辑 if (Time.time - startTime >= timeStep) { Vector3 iconAngle = mainIcon.localEulerAngles; iconAngle.z += oneStepAngle; mainIcon.localEulerAngles = iconAngle; startTime = Time.time; } // 新增:判断是否到达总等待时间,且未显示过下一屏 if(!hasShownNextScreen && Time.time - totalWaitStartTime >= totalWaitTime) { if(nextScreen != null) nextScreen.SetActive(true); hasShownNextScreen = true; // 可选:如果不需要继续旋转图标,可以禁用这个脚本 // this.enabled = false; } }
- 最后在Unity编辑器里完成配置:
- 把下一屏的GameObject拖到脚本的
nextScreen字段上 - 在
totalWaitTime里设置你想要等待的时间 - 确认
nextScreen对象初始是未激活状态(取消Inspector里的复选框勾选)
- 把下一屏的GameObject拖到脚本的
这样运行后,加载图标会正常旋转,等到设定的总时间到了,就会自动显示下一屏。
内容的提问来源于stack exchange,提问作者Maria Nolasco
相关产品推荐
相关产品推荐

