一、基本思路
熟悉Unity3D开发后就会发现,游戏的每个场景都有一个UI树,而通过这个UI树的根节点可以遍历整个UI树的所有UI对象。而Unity3D是通过挂载脚本的方式来控制游戏逻辑的,因此我们可以在场景的UI树的跟对象上挂载脚本来获取整个UI树的所有UI对象。再通过GameObject的GetComponent方法来获取我们需要的组件,利用组件属性的Get、Set方法来操控游戏UI对象,而不需要修改游戏代码。
然后我们再通过Socket接口来连接自动化测试框架和挂载在游戏上的脚本,使自动化框架可以操控游戏对象。对于一些Unity3D组件较难模拟的事件,例如touch事件、重力感应事件等,我们可以通过编写一个Android插件的形式来模拟Android事件,然后在Unity3D脚本中调用Android插件即可。
二、意义及优势
1、Unity3D引擎日渐成为主流,对基于Unity3D引擎的游戏的自动化非常有必要
2、基于引擎的自动化测试不需要修改游戏代码,不会带入第三方bug
3、基于引擎自动化东距可以跨平台(Android插件这部分不能跨平台)
4、SDK和自动化框架基于Socket传送数据,对自动化框架没有平台要求
5、可以兼容其他的自动化测试框架。
三、具体方案
1、基于Unity3D引擎的游戏结构
首先一个游戏可以有多个场景,但是每次Application只载入一个场景。
场景中可以挂载多层Gameobject树形结构,每个游戏UI对象都是一个GameObject对象。
对于不同UI对象,GameObject添加不同的组件来体现不同的特性。
游戏逻辑是通过脚本来实现的,而脚本直接挂载到对应的GameObject上&#x