「新手引导框架」升级,支持自动挂机等更多玩法!

2023-10-27 20:30

本文主要是介绍「新手引导框架」升级,支持自动挂机等更多玩法!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01

将新手引导框架开源之后,陆续收到不少伙伴们的反馈,其中有一个问题是“引导脚本的自动执行,只能在浏览器上运行,感觉有些鸡肋”。

从最开始 Shawn 也一直在思考如何实现在原生环境上的屏幕点击模拟,之前的思路是分别在 iOS\Android 上分别实现一套原生的 JSB 接口,调用系统的能力来模拟真实的屏幕触摸,不过要让大家使用起来需要折腾 JSB\c++,相当于SDK接入,太过于复杂。

在与脱贫实验中的伙伴们几次交流讨论,大家给出了不同的方案,其中有「黝黑蜗牛」的方案给了我很大的启发,下面是解决原生上实现自动节点点击的讨论过程。

640?wx_fmt=png

「黝黑蜗牛」提出新的思路,使用cc.Button组件发送点击事件来模拟。

640?wx_fmt=png

但是非按钮节点怎么办呢?动态创建用完再删除...还有更好的方法吗?

640?wx_fmt=png

调试 Cocos Creator 的源码,找到事件派发的根源上,需要一个event事件对象。

640?wx_fmt=png

再向上追踪源码,定位到handleTouchesEnd函数,touches参数是点击的坐标,比较好创建。

640?wx_fmt=png

调用引擎接口handleTouchesBegin\handleTouchesEnd在Mac模拟器上自动执行成功!

640?wx_fmt=png

微信小游戏环境也成功了640

下面是模拟点击的核心代码:

function touchSimulation(x, y) {	//获取屏幕矩形大小	let rect;	let inputManager = _cc.inputManager;	if (cc.sys.isBrowser) {	let canvas = document.getElementById("GameCanvas");	rect = inputManager.getHTMLElementPosition(canvas);	} else {	rect = cc.view.getFrameSize();	rect.left = 0;	rect.top = 0;	}	//将x,y从Creator世界坐标转换到设备窗口坐标	let vp = cc.view.getViewportRect();	let sx = cc.view.getScaleX();	let sy = cc.view.getScaleY();	let ratio = cc.view.getDevicePixelRatio();	let htmlx = (x * sx  + vp.x) / ratio + rect.left;	let htmly = rect.top + rect.height - (y * sy + vp.y) / ratio;	let pt = cc.v2(htmlx, htmly);	//模拟点击操作	cc.log(`模拟点击坐标:${pt.x}, ${pt.y}`);	let touch = inputManager.getTouchByXY(pt.x, pt.y, rect);	inputManager.handleTouchesBegin([touch]);	setTimeout(() => {	inputManager.handleTouchesEnd([touch]);    	}, 200);	
}
02 

折腾这么多,新手引导自动执行到底有什么价值呢?

看过Shawn的GitChat文章想必你知道,新手引导自动执行可以实现自动化测试,引导脚本就是自动化测试脚本。

Shawn早在Cocos2d-js时使用过Cocos官方开发的Cocos2d-js devtool工具,看下图:

640?wx_fmt=jpeg

它是直接将一段 JS 代码嵌入已经运行的 Cocos2d-js 游戏中,如果将新手引导的自动执行能力动态嵌入一个 CocosCreator H5 游戏那将会是什么呢?—— 外挂

新手引导框架本身不依赖于具体游戏的代码逻辑,重点只关心场景树结构、关键节点名字,要实现一个外挂的可行性非常高。

一讲到外挂估计大家都觉得有点黑暗,那我们换一个正面的思路,实现一个“内挂”,就是在游戏内部的挂机自动执行。

想信大多数人都见过很多无脑的,自动打怪、自动做任务的传奇类挂机游戏... 使用引导自动执行的能力 + 操作录像功能,将会极大的降低挂机类游戏的研发成本,为开发人员节省时间!

03

新手引导框架正式迁移到GitHub地址:

       https://github.com/ShawnZhang2015/GodGuide

「Creator星球游戏开发社区」从最早的「奎特尔星球」改名来,Shawn的愿景一直都没有改变:“帮助初学者快速入门,助力企业降低研发成本,让游戏成为教育的最强武器!

明天是教师节,Shawn特地为教师节准备了一份自己的礼物:

小游戏、大能量,愿我们在前进的道路上砥砺前行,共同成长!欢迎伙伴们加我微信:z6346289。

640?wx_fmt=jpeg

640? 
640?wx_fmt=png 

Creator星球游戏开发社区

长按二维码,关注我们!

640?wx_fmt=gif

这篇关于「新手引导框架」升级,支持自动挂机等更多玩法!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288196

相关文章

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新