stopcoroutine 不起作用

请注意只有StartCoroutine使用一个字符串方法名时才能用StopCoroutine停用之.

不起作用,这是我的和外出模式有关的内容,看看是不是对于外出模式的判断出错了:using UnityEngine; using System.Collections; public class 聊天邀请管理器 : MonoBehaviour { // 单例模式 public static 聊天邀请管理器 Instance { get; private set; } [Header("引用")] public 聊天邀请弹窗 邀请弹窗; public 聊天系统 聊天系统; public bool 初始处于外出模式 = false; // 默认不进入外出模式 [Header("邀请设置")] public float 最小邀请间隔 = 10000f; public float 最大邀请间隔 = 30000f; public bool 调试模式 = true; private bool 处于外出模式 = false; private bool 正在聊天 = false; private Coroutine 邀请协程; private void Awake() { // 单例初始化 if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); // 可选:跨场景保持 } else { Destroy(gameObject); return; } } public void 设置正在聊天(bool 聊天中) { 正在聊天 = 聊天中; if (调试模式) Debug.Log($"聊天状态变更为: {聊天中}"); if (聊天中) { if (邀请协程 != null) { StopCoroutine(邀请协程); 邀请协程 = null; } } else if (处于外出模式 && 邀请协程 == null) { 邀请协程 = StartCoroutine(等待并邀请()); } } void Start() { // 验证引用 if (邀请弹窗 == null) Debug.LogError("聊天邀请管理器:请赋值邀请弹窗!"); else Debug.Log("聊天邀请管理器:已正确引用邀请弹窗"); // 自动查找聊天系统 if (聊天系统 == null) { 聊天系统 = FindObjectOfType<聊天系统>(); if (聊天系统 == null) Debug.LogError("聊天邀请管理器:未找到聊天系统组件!"); } // 初始状态设置 处于外出模式 = 初始处于外出模式; if (处于外出模式 && !正在聊天 && 邀请协程 == null) { 邀请协程 = StartCoroutine(等待并邀请()); } } // 显示邀请 public void 显示邀请(string 开场白, System.Action 接受回调) { if (邀请弹窗 == null) { Debug.LogError("邀请弹窗未赋值,无法显示邀请"); return; } 邀请弹窗.显示弹窗( "系统消息", // 标题 开场白, // 内容(开场白) 接受回调, // 接受回调 () => // 拒绝回调 { if (调试模式) Debug.Log("邀请被拒绝"); if (处于外出模式 && !正在聊天 && 邀请协程 == null) { 邀请协程 = StartCoroutine(等待并邀请()); } } ); } // 设置外出模式 public void 设置外出模式(bool 开启) { 处于外出模式 = 开启; if (调试模式) Debug.Log($"外出模式已{(开启 ? "开启" : "关闭")}"); if (开启 && !正在聊天 && 邀请协程 == null) { 邀请协程 = StartCoroutine(等待并邀请()); } else if (!开启 && 邀请协程 != null) { StopCoroutine(邀请协程); 邀请协程 = null; } } // 等待一段时间后显示邀请 private IEnumerator 等待并邀请() { while (true) { // 随机等待时间 float 等待时间 = Random.Range(最小邀请间隔, 最大邀请间隔); if (调试模式) Debug.Log($"将在 {等待时间:F1} 秒后显示下一次邀请"); yield return new WaitForSeconds(等待时间); // 检查是否仍需要显示邀请 if (处于外出模式 && !正在聊天) { 显示邀请("默认开场白", () => { if (聊天系统 != null) { 聊天系统.打开聊天窗口(); } }); break; // 显示后退出协程,等待聊天结束后重新开始 } else if (!处于外出模式 || 正在聊天) { break; } } 邀请协程 = null; } }
08-31
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值