这是一套基于 Unity UGUI 的深度可定制、模块化框架总成
一个轻量级、功能完整的 Unity 编辑器协程系统,支持生命周期管理、嵌套协程和异步操作等待。
- 🚀 轻量高效 - 完全独立的实现,无外部依赖
- 🔄 嵌套支持 - 支持协程嵌套,轻松构建复杂逻辑
- ⏱️ 时间等待 - 支持基于秒数的延迟等待
- 📦 异步操作 - 支持等待 Unity 异步操作完成
- 🧹 自动清理 - 所有者被销毁时自动停止协程
- 🎯 类型安全 - 完整的泛型和类型检查支持
- 📝 中文友好 - 完整的中文注释和日志输出
将以下文件复制到你的项目的 Editor 文件夹或任意脚本文件夹:
XCoroutine/ ├── XCoroutine.cs ├── XCoroutineUtility.cs ├── XCoroutineExtension.cs └── XCoroutineWaitForSeconds.cs
创建文件夹 Assets/Plugins/SevenStrikeModules/XCoroutine,将文件放入其中。
using SevenStrikeModules.XCoroutine;
using UnityEditor;
using UnityEngine;
using System.Collections;
public class MyEditorWindow : EditorWindow
{
private XCoroutine myCoroutine;
[MenuItem("Window/我的窗口")]
public static void ShowWindow()
{
GetWindow<MyEditorWindow>().Show();
}
private void OnEnable()
{
// 启动协程(窗口关闭时自动停止)
myCoroutine = this.xec_StartCoroutine(MyRoutine());
}
private void OnDisable()
{
// 安全停止协程
this.xec_StopCoroutine(myCoroutine);
}
private IEnumerator MyRoutine()
{
Debug.Log("协程开始");
// 等待 1 秒
yield return new XCoroutineWaitForSeconds(1f);
Debug.Log("等待了 1 秒");
// 执行循环
for (int i = 0; i <= 100; i++)
{
float progress = i * 0.01f;
Debug.Log($"进度: {progress * 100}%");
yield return new XCoroutineWaitForSeconds(0.05f);
}
Debug.Log("协程完成");
}
}🔄 从原版迁移 如果你之前使用的是 Unity 官方的 EditorCoroutines 包:
性能:协程使用 EditorApplication.update 驱动,性能开销极小
嵌套限制:理论上支持任意深度的协程嵌套
线程安全:仅在主线程使用,不要在子线程中调用
📄 许可证 MIT License
🤝 贡献 欢迎提交 Issue 和 Pull Request!
📧 联系方式 如有问题或建议,请联系 SevenStrike 开发团队。

