AutoTool是一个基于Unity,建立任务流水线的工具
该工具建立一套简单的任务流水线,添加任务实现BuildTask抽象类即可.
- 可视化界面. 可以监控到每个任务的执行状态、执行时间
- 动态任务配置. 根据界面提供的选项,可自定义任务流水线
- 可扩展性高. 继承实现BuildTask抽象类,即可扩展任务流水线
- 使用多线程优化了批处理调用. 解决了Bat缓冲池满Bat阻塞的情况和调用Bat不会卡死Unity的问题
- 封装了Log日志和文件操作.
- 任务回滚. 当流水线失败时,自动将可回滚的任务进行回滚.(比如svn update为不可回滚任务,文件移动为可回滚任务)
工具栏->Editor->BuildAndroidPipline
只有标记了可回滚的任务才可以回滚,在实现可回滚的任务,只需实现:
bool IsCanReverse { get; }//任务是否可回滚
void OnReverse();//回滚(当任务失败时执行回滚)
测试样例请见 TestReverseTask.cs 测试效果图:
模块名称 | 状态 |
---|---|
任务动态配置 | ⭕ |
多条流水线切换 | ⭕ |
测试用例 | ⭕ |
- 增加任务链枚举类型. 在AutoToolConstants中的TaskChain中添加任务类型
- 绘制任务链的操作UI. 在BuildPiplineWindow中的OnGUI增加一个方法绘制任务链需要的UI
- 添加任务到任务链中. 在 中的AddTasksToATBuildPipline中添加任务,具体的任务都在Task文件夹下
接口名称 | 作用 | 示例 |
---|---|---|
ATLog.Log(string content) | 自定义Log内容,输出到%rootproject%\autoToolLogPath.log | ATLog.Log("Hello,World!"); |
ATLog.Log(ErrorCode errorCode) | 输出预定义Log到%rootproject%\autoToolLogPath.log | ATLog.Log(ErrorCode.NONE); |
ATLog.ClearLog() | 清除Log | ATLog.ClearLog(); |
BatTool.CallBatByThread(string batPath, BuildTask task) | 多线程执行批处理 | BatTool.CallBatByThread(AutoToolConstants.BatDic["svnOP_Update"],this); |
BatTool.CallBat(string batPath) | 执行批处理 | BatTool.CallBat("C:\hello.bat"); |
FileHelper.ShowExplorerWindow(string filePath) | 根据文件路径打开Windows文件浏览器 | ... |
FileHelper.WriteToFile(string filePath, string content, FileMode mode = FileMode.OpenOrCreate) | 将内容写入文件 | ... |
FileHelper.MoveFolder(string sPath, string tPath) | 剪切文件夹 | ... |
FileHelper.RemoveFullFolder(string path) | 移除文件夹及其子文件 | ... |
FileHelper.CopyFile(string sourcePath, string destPath, bool isrewrite = true) | 复制文件 | ... |
FileHelper.CopyFolder(string sourcePath, string destPath) | 复制文件夹及其子文件 | ... |
SysProgressBar.ShowProgressBar(float current, float total = 100.0f, string taskName = "请稍后...") | 显示Unity内置进度条 | ... |
SysProgressBar.ClearProgressBar() | 清除进度条 | ... |