OnmyojiAutoScript探索任务绘卷模式识别异常问题分析与修复
问题背景
在OnmyojiAutoScript项目中,用户反馈在使用探索任务的绘卷模式时,脚本偶尔会出现卡住的情况。经过分析发现,这是由于脚本在副本内部错误地将樱饼数量识别为突破券数量导致的异常行为。
问题现象
当脚本执行探索任务并使用绘卷模式时,在以下场景会出现异常:
- 在副本内部战斗结束后返回选怪界面时
- 有时打1-2个怪就会出现,有时需要打十几个怪才会触发
- 与选择UP类型无关(测试过全部和只打达摩都会出现)
根本原因分析
经过技术团队深入分析,发现问题的根本原因在于:
- UI位置重叠:大地图界面突破券数量的显示位置与副本内界面樱饼数量的显示位置相同
- 状态判断不足:脚本在副本内部时错误地尝试识别突破券数量,而实际上应该识别的是樱饼数量
- OCR识别混淆:由于位置相同,OCR引擎有时会将樱饼数量误识别为突破券数量
技术解决方案
针对这一问题,技术团队提出了以下解决方案:
- 增加状态判断条件:在执行突破券数量识别前,增加更严格的场景判断条件,确保只有在真正的大地图界面才执行该操作
- 优化识别时机:将突破券数量的检测时机调整为仅在退回到大地图界面时执行
- 多重验证机制:在识别突破券数量时,增加额外的UI元素验证,确保当前确实处于大地图界面
实现细节
在具体实现上,开发团队对代码进行了以下改进:
- 增加了对探索副本内部特定UI元素的检测逻辑
- 优化了状态机转换的条件判断
- 改进了OCR识别结果的验证流程
- 增加了异常情况的处理机制
验证与测试
修复后,技术团队进行了以下验证:
- 在多种探索场景下进行长时间稳定性测试
- 模拟高低频率的副本进出操作
- 测试不同UP类型选择情况下的表现
- 验证樱饼和突破券数量变化的识别准确性
测试结果表明,修复后的版本在各种情况下都能正确识别相应资源数量,不再出现卡住的情况。
总结
本次问题修复展示了OnmyojiAutoScript团队对细节的关注和对用户体验的重视。通过深入分析UI布局和状态转换逻辑,团队成功解决了探索任务绘卷模式下的识别异常问题,提升了脚本的稳定性和可靠性。这也为今后类似问题的解决提供了宝贵经验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考