最明白的Unity3D手机平台分辨率自动匹配教程-适合新手

本文详细介绍了如何使用NGUI插件在Unity3D中实现自适应各种手机屏幕分辨率的功能,包括下载插件、创建2DUI对象、设置UIRoot属性以适应不同分辨率的手机屏幕,以及如何确保添加的所有对象都能跟随背景图片等比例缩放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上搜了好多资料关于如何自适应各种繁杂平台的手机屏幕分辨率,找到了一个关键词UIRoot,于是乎去下载了NGUI插件,这是一个Unity3D上开发2D游戏最好的插件了。

教程环境:Unity4.5.1f3, NGUI v3.7.1。若界面有所差别,请自行领悟!

NGUI百度百科定义:NGUI是严格遵循KISS原则并用C#编写的Unity(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架。其代码简洁,多数类少于200行代码。

1. 下载NGUI Next-Gen UI v3.7.0

2. 导入NGUI package到Unity。

custom-package

这时候菜单上会出现NGUI的菜单栏:

NGUIcaidan

3. 将默认的Main Camera删掉,通过菜单栏NGUI->Create新建一个2D UI对象。

unity3d-2dui

此时创建了一个UI Root以及子对象Camera(这就是为什么要删除默认的摄像头),这个摄像头自带了NGUI的UICamera脚本,这个脚本的作用是来响应各种事件的。

unity3d-uiroot-camera

4. 设置UI Root属性,点击UI Root,此时在右侧的Inspector面板可以看到其相关属性,这里很关键!选择Scaling Style为ConstrainedOnMobiles,这个是专门为手机分辨率设计的选项,此时下面有两个属性,勾选Content Width和Content Height,并设置你最期望的屏幕分辨率,一般会是你背景图片的分辨率,这样UI Root下的子元素就会根据手机的分辨率等比例缩放!注意下图的官方说明。

unity-uiroot-scalingstyle

5. 你会发现这个新的Camera看不到你创建的物体,需要设置摄像头为可视摄像头。点击Camera,在右侧的Inspector面板会看到Camera的属性,设置以下两个属性:

Culling Mask:选Everything(这个非常重要,这样才能看到你的物体)。

Clear Flags: 选Skybox

unity-camera-cullingmask

6. 通过NGUI创建一个Texture对象当作背景图片,这一步非常重要!之前博主在这边卡了好长时间。只有在UI Root下并且是NGUI的对象才能应用到UI Root的Scaling Style功能!(当然,应该还有博主没摸清的地方。)

unity-texture-gbSetting

7. 好了,检查下Game视图,看看是不是生效了呢:)下面放几张有代表性的图。

注意:以后添加的所有对象都应该在UI Root下,这样才能跟着背景图片等比例缩放!

分辨率:1280*800(16:10),上下填充黑边。

unity-1280-800-16-10

分辨率:1920*1080(16:9),完美填充,无黑边!

unity-1080p

分辨率:800*400(2:1),左右填充黑边。

unity-400p


手机竖屏设置,参考Unity3D 手机竖屏设置(For Android)

 

转载请注明:ShirlmanBlog » 最明白的Unity3D手机平台分辨率自动匹配教程-适合新手

<think>嗯,用户想了解如何用Airtest进行Python自动化测试。首先,我得先回忆一下Airtest的基本信息。Airtest是网易开源的自动化测试框架,主要用于游戏和App的UI测试,支持图像识别和基于坐标的操作,对吧? 接下来,用户可能需要知道为什么选择Airtest。比如,它的图像识别功能对于没有源码或者复杂UI结构的测试很有用,特别是游戏中的动态元素。还有,AirtestIDE提供了可视化操作,可能对新手友好,但用户可能更关心如何在Python中使用。 然后,我需要介绍Airtest的核心功能。图像识别、Poco框架、跨平台支持这些点应该提到。可能还要说明Airtest和Poco的区别,Poco是基于UI控件树的,适合传统App,而Airtest的图像识别更适合游戏。 安装步骤是必须的,用pip安装Airtest和Poco,可能还要安装对应的IDE。然后环境搭建部分,需要说明连接设备的方法,比如Android的ADB,iOS可能需要其他工具,或者Windows应用。 接下来,基本使用流程。从初始化设备,到执行操作,比如点击、滑动、断言。可能需要给出代码示例,比如启动应用、截图、图像点击、Poco定位元素、滑动列表、输入文本、断言检查等。 然后,测试脚本的结构可能需要说明,用TestCase类组织测试用例,断言的使用。后生成报告,用simple_report函数。 在优点部分,图像识别的优势,跨平台,易用性,集成报告这些点很重要。但也要提到缺点,比如图像识别的性能问题,维护成本,设备依赖等。 用户可能的疑问点:Airtest和Appium的区别?可能需要在回答中比较,比如Airtest更适合游戏,图像识别;Appium基于控件,适合标准App。或者用户可能想了解如何结合使用,比如Airtest处理游戏部分,Appium处理其他部分。 另外,用户可能需要知道如何处理动态UI或元素变化,这时候可能需要结合Poco的控件查找和Airtest的图像识别。或者如何处理测试中的等待和重试机制,Airtest有没有内置的支持。 可能还需要提到Airtest的局限性,比如对于分辨率适配的问题,图像识别准确率受设备影响,或者测试脚本的维护成本较高等实际使用中的问题。 后,示例代码需要简洁明了,展示基本操作,让用户能够快速上手。同时,强调生成测试报告的重要性,方便查看结果。 总之,回答的结构应该是先介绍Airtest是什么,核心功能,安装步骤,基本使用方法和示例,优缺点,后总结适用场景。这样用户能有一个全面的了解,并能够开始自己的测试项目。</think>Airtest 是一款由网易开源的自动化测试框架,主要用于 **游戏、移动应用(Android/iOS)和 Windows 应用** 的 UI 自动化测试。它结合了图像识别、基于坐标的点击操作和控件树(Poco框架)等多种技术,适合测试复杂 UI 或动态内容(如游戏画面)。以下是其核心特性和使用方法的介绍: --- ### **一、Airtest 的核心优势** 1. **图像识别驱动** 无需依赖控件 ID 或 XPath,直接通过截图匹配 UI 元素,适合测试游戏或无法获取源码的应用。 2. **跨平台支持** 支持 Android、iOS、Windows 应用,以及 Unity、Cocos2dx 等游戏引擎。 3. **Poco 框架集成** 结合 Poco 可实现基于控件树的精准操作(类似 Appium),适合传统 App 测试。 4. **易用性** 提供 AirtestIDE(可视化工具),录制操作直接生成 Python 代码,降低学习成本。 5. **报告生成** 自动记录操作步骤并生成 HTML 测试报告,便于调试和结果分析。 --- ### **二、安装与环境搭建** ```bash # 安装 Airtest 核心库 pip install airtest # 安装 Poco 控件驱动(可选,用于 App 测试) pip install pocoui # 安装 AirtestIDE(可选,图形化工具) # 从官网下载:http://airtest.netease.com/ ``` --- ### **三、基本使用流程** #### 1. **连接设备** ```python from airtest.core.api import connect_device # 连接 Android 设备 dev = connect_device("Android:///") # 默认连接第一台设备 # 连接 Windows 窗口 dev = connect_device("Windows:///123456") # 窗口句柄 ``` #### 2. **执行操作(图像识别示例)** ```python from airtest.core.api import * # 启动应用 start_app("com.example.app") # 截图并点击匹配的图像 touch(Template("button.png")) # 自动寻找屏幕中与 button.png 匹配的区域并点击 # 滑动操作 swipe((500, 1000), (500, 500)) # 从坐标 (500,1000) 滑动到 (500,500) ``` #### 3. **使用 Poco 控件驱动(精准定位)** ```python from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco() # 点击控件 poco("登录按钮").click() # 输入文本 poco("输入框").set_text("Hello Airtest") # 断言元素存在 assert poco("成功提示").exists() ``` #### 4. **生成测试报告** ```python from airtest.report.report import simple_report # 在脚本结束后生成报告 simple_report(__file__, logpath=True, output="report.html") ``` --- ### **四、测试脚本示例** ```python from airtest.core.api import * from poco.drivers.unity3d import UnityPoco class TestDemo: def setup(self): connect_device("Android:///") self.poco = UnityPoco() def test_login(self): touch(Template("login_icon.png")) # 图像识别点击登录图标 self.poco("username_input").set_text("test_user") self.poco("password_input").set_text("123456") self.poco("login_button").click() assert self.poco("welcome_text").exists() # 断言登录成功 def teardown(self): stop_app("com.example.game") ``` --- ### **五、适用场景与注意事项** - **适用场景** - 游戏自动化(如点击技能图标、验证战斗结果) -平台应用 UI 测试(尤其是动态 UI 或无法获取控件树的情况) - **注意事项** - 图像识别对分辨率敏感,需在不同设备上适配截图。 - 复杂场景下,优先结合 Poco 控件操作提高稳定性。 - 性能要求高的测试需谨慎(图像识别耗时可能较长)。 --- ### **六、优缺点对比** | **优点** | **缺点** | |----------|----------| | 无需源码即可测试 | 图像识别性能较低 | | 跨平台支持广泛 | 截图维护成本高 | | 学习曲线平缓 | 对动态 UI 适应性有限 | --- 如果需要测试传统 App,推荐结合 **Poco 框架**;若测试游戏或动态界面,优先使用 **图像识别**。Airtest 的灵活性能覆盖多种场景,但需根据实际需求权衡技术选型。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值