OnmyojiAutoScript模拟器分辨率异常问题分析与解决方案
问题背景
在使用OnmyojiAutoScript(阴阳师自动化脚本)时,许多用户会遇到模拟器分辨率异常的问题。这类问题通常表现为脚本无法正确识别游戏界面、点击位置偏移、或者直接报错退出。本文将深入分析分辨率异常的根本原因,并提供详细的解决方案。
分辨率要求分析
核心分辨率标准
OnmyojiAutoScript对模拟器分辨率有严格的要求,必须设置为1280×720像素。这是脚本设计的基准分辨率,所有图像识别和坐标计算都基于这个标准。
为什么必须是1280×720?
- 图像模板匹配:脚本使用预先制作好的图像模板进行界面识别
- 坐标定位精度:所有点击位置都是基于1280×720分辨率计算的
- 性能优化:统一分辨率可以避免动态调整带来的性能开销
常见分辨率异常问题
问题1:分辨率不匹配
# 在screenshot.py中的分辨率检查逻辑
def check_screen_size(self):
width, height = image_size(self.image)
logger.attr('Screen_size', f'{width}x{height}')
if width == 1280 and height == 720:
self._screen_size_checked = True
return True
else:
logger.critical(f'Resolution not supported: {width}x{height}')
logger.critical('Please set emulator resolution to 1280x720')
raise RequestHumanTakeover
问题2:屏幕方向错误
当检测到720×1280(竖屏)时,脚本会尝试自动旋转:
elif not orientated and (width == 720 and height == 1280):
logger.info('Received orientated screenshot, handling')
self.get_orientation()
self.image = self._handle_orientated_image(self.image)
orientated = True
问题3:纯黑屏问题
在某些模拟器上可能会获取到纯黑色的截图:
color = get_color(self.image, area=(0, 0, 1280, 720))
if sum(color) < 1:
logger.warning('Received pure black screenshots from emulator')
解决方案
方案1:手动设置模拟器分辨率
| 模拟器类型 | 设置方法 | 推荐参数 |
|---|---|---|
| 雷电模拟器 | 设置→性能设置→分辨率 | 1280×720 (dpi 240) |
| 夜神模拟器 | 系统设置→性能设置→分辨率 | 1280×720 (平板模式) |
| MuMu模拟器 | 设置→界面→分辨率 | 1280×720 |
| 逍遥模拟器 | 设置→性能设置→分辨率 | 1280×720 |
方案2:使用脚本内置的ADB命令调整
# 通过ADB命令设置分辨率
def set_resolution_via_adb(self, width=1280, height=720, dpi=240):
cmd = f"adb shell wm size {width}x{height}"
self._execute(cmd)
cmd = f"adb shell wm density {dpi}"
self._execute(cmd)
方案3:修改配置文件
在config目录中找到对应的设备配置文件,确保分辨率设置正确:
device:
resolution: 1280x720
dpi: 240
orientation: landscape
故障排查流程
高级调试技巧
使用调试模式查看当前分辨率
# 在device.py中添加调试信息
def debug_resolution(self):
screenshot = self.screenshot()
width, height = image_size(screenshot)
logger.info(f"当前分辨率: {width}x{height}")
logger.info(f"屏幕方向: {self.orientation}")
常见的分辨率相关错误代码
| 错误代码 | 含义 | 解决方法 |
|---|---|---|
| RESOLUTION_NOT_SUPPORTED | 分辨率不支持 | 调整为1280×720 |
| ORIENTATION_MISMATCH | 屏幕方向错误 | 设置为横屏模式 |
| BLACK_SCREEN_DETECTED | 获取到黑屏 | 更换截图方法 |
预防措施
1. 初始化检查
在脚本启动时添加分辨率验证:
def initialize_resolution_check(self):
"""初始化时检查分辨率设置"""
if not self.check_screen_size():
self.auto_adjust_resolution()
2. 定期监控
设置定时任务监控分辨率变化:
def resolution_monitor(self):
"""每5分钟检查一次分辨率"""
monitor_timer = Timer(300)
while True:
if monitor_timer.reached():
if not self.check_screen_size():
logger.warning("分辨率发生变化,尝试自动调整")
self.auto_adjust_resolution()
monitor_timer.reset()
总结
分辨率异常是OnmyojiAutoScript使用过程中最常见的问题之一。通过本文的分析和解决方案,用户可以:
- 理解分辨率要求的必要性
- 识别各种分辨率相关的问题
- 掌握多种解决方法
- 预防未来可能出现的分辨率问题
记住,保持模拟器分辨率为1280×720横屏模式是确保脚本正常运行的关键。如果遇到复杂问题,建议查看日志文件中的详细错误信息,或者参考脚本的官方文档。
提示:定期更新OnmyojiAutoScript到最新版本,开发者会不断优化对各类模拟器的兼容性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



