Unity新手求助:如何让Boss攻击模式结束后10秒再次触发?
Unity中Boss攻击模式结束后10秒重启的实现方法
针对新手,这里提供两种简单易懂的实现方式,你可以根据自己的代码习惯选择:
方法一:用协程(Coroutine)处理延迟
协程是Unity专门用来处理这类延迟/分步逻辑的工具,新手容易上手:
- 先写好攻击模式的启动和结束方法:
// 启动Boss攻击模式的方法 void StartBossPattern() { // 这里写你的攻击逻辑:播放攻击动画、发射技能等 Debug.Log("Boss开始攻击"); } // 攻击模式结束时必须调用这个方法 void OnBossPatternEnd() { Debug.Log("Boss攻击模式结束"); // 启动延迟重启的协程 StartCoroutine(RestartAfterDelay(10f)); }
- 再写处理延迟的协程:
// 延迟指定秒数后重启攻击模式 IEnumerator RestartAfterDelay(float delaySeconds) { // 等待10秒 yield return new WaitForSeconds(delaySeconds); // 时间到了,重新启动攻击模式 StartBossPattern(); }
方法二:用Invoke()方法快速实现
如果觉得协程有点绕,用Invoke()更简洁,一行代码搞定延迟:
void OnBossPatternEnd() { Debug.Log("Boss攻击模式结束"); // 10秒后自动调用StartBossPattern方法 Invoke(nameof(StartBossPattern), 10f); } void StartBossPattern() { // 攻击逻辑写在这里 Debug.Log("Boss开始攻击"); }
关键提醒
- 一定要保证
OnBossPatternEnd()在攻击真的结束时被触发,比如攻击动画播放完的回调、技能全部释放完毕的时机。 - 如果Boss可能在延迟期间被打死,记得在Boss死亡逻辑里加
StopAllCoroutines()(用协程的情况)或者CancelInvoke()(用Invoke的情况),避免死后还触发攻击。
内容的提问来源于stack exchange,提问作者abnormal
相关产品推荐
相关产品推荐

