当前位置: 首页 > news >正文

第五十四章 Unity 移动平台输入(下)

本章节我们介绍一个模拟器插件。这种插件比较多,比如EasyTouch,Lean Touch,Joystick Pack等等。EasyTouch是一个使用非常广泛的插件,支持点击,拖拽,遥感等很多常用功能。不过遗憾的是,该插件已经下架了。

新的插件应该是“Easy Touch Controls”,作者都是Hedgehog Team。当然,我们还有其他渠道可以下载该插件,这里我们使用的是Easy Touch 5 Touchscreen Virtual Controls 5.0.17.unitypackage。我们在上面的工程基础上,将此资源包导入进来。

 

需要升级API,我们点击“I Made a Backup,Go Ahead!”按钮即可。

导入完毕后,会弹出一个窗口,我们关闭它即可。

在Project工程面板中,我们可以看到导入进来后的资源目录和文件。

接下来,我们在Hierarchy层次面板空白处,右击选择“EasyTouch Controls”->“Joystick”,然后将我们的Scene切换为“2D”模式,因为这个插件应该是基于UGUI写的。

 

我们就能看到一个类似“摇杆”的模拟器了。请注意,它在我们的层次面板中的名称为“New Joystick”的游戏对象哦。我们来查看它的检视面板。

该插件最重要的就是“ETC Joystick”这个脚本组件。

JoystickName:虚拟摇杆游戏物体的名字;

Activated:虚拟摇杆是否激活可用;

Visible:虚拟摇杆是否可见;

UseFixedUpdate:使用FixedUpdate 函数更新摇杆信息;

Unregister at disabling time:注销时禁用虚拟摇杆;

首先,我们查看它下面的“Position & Size”项目,我们通过该项目可以将这个摇杆放置到左下角,设置如下:

选择“Anchor”锚点为Bottom Left左下角,并设置间距为20像素。设置间距的原因是摇杆要有前后左右移动的空间,此时我们在看scene视图。

在“Sprites”中我们可以设置“摇杆”的背景图片。

接下来,就是我们的事件的配置,主要分为Move,Touch,Down,Press四种事件设置。

1.Move Events [移动事件]

OnMoveStart,OnMove,OnMoveSpeed,OnMoveEnd

在移动虚拟摇杆操纵钮的时候,在移动过程中逐步触发对应的事件。

2.Touch Events [触摸事件]

OnTouchStart,OnTouchUp

操纵钮的开始操作和操作结束,各执行一次事件。

3.Down Events [方向事件]

OnDownUp,OnDownRight,OnDownDown,OnDownLeft

当我们按下虚拟摇杆操纵钮移动到上下左右最终位置时,触发一次。

4.Press Events [按下事件]

OnPressUp,OnPressRight,OnPressDown,OnPressLeft

当我们按下虚拟摇杆操纵钮移动到上下左右最终位置时,则会一直触发

我们就拿Move来举例。

根据事件名称, 我们大致了解这些事件的触发机制。我就以OnMove来举例。我们就来创建一个“MoveScript.cs”脚本文件,在里面创建OnMoveTest方法。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MoveScript : MonoBehaviour
{public void OnMoveTest(Vector2 v){Debug.Log("X=" + v.x);Debug.Log("Y=" + v.y);}
}

然后,我们将该脚本附加到“Main Camera”上面,然后再去配置OnMove事件。

这里,我们取消掉之前的“TouchScript.cs”脚本(上一个章节使用的脚本)

接下来,我们就可以直接运行工程(不用到手机上运行测试),然后拖动摇杆进行测试。

代码就不用解释了,X和Y代表两个方向,其数值为-1到1之间。如果是X轴的话,正数代表向右移动,负数代表向左移动;如果是Y轴的话,正数代表向上移动,负数代表向下。关于Easy Touch插件,我们就介绍到这里,更多的内容可以到Asset目录下EasyTouchBundle文件夹下来查看它的官方文档和案例。它分为EasyTouch和EasyTouchControls两部分,每一个部分都包含Documentation文档和Examples案例,大家自己可以看一看。

本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id

相关文章:

第五十四章 Unity 移动平台输入(下)

本章节我们介绍一个模拟器插件。这种插件比较多,比如EasyTouch,Lean Touch,Joystick Pack等等。EasyTouch是一个使用非常广泛的插件,支持点击,拖拽,遥感等很多常用功能。不过遗憾的是,该插件已经…...

KD305Y带吸收比极化指数兆欧表

一、概述 KD305Y绝缘电阻测试仪对众多的电力设备如:电缆、电机、发电机、变压器、互感器、高压开关、避雷器等要求做一系列的绝缘性能试验,首先是要做绝缘电阻测试。近年来随着电力事业的飞速发展,大容量设备的使用不断增加,用普通的兆欧表无…...

磁盘空间不足怎么办?释放磁盘空间的4种方法

虽然现在硬盘的空间越来越大,但是在这个数据爆炸的时代中,总是会觉得存储空间不够用,一不注意磁盘就满了,那么除了清空回收站、卸载某些程序外,还能怎么释放磁盘空间呢? 方案一:禁用休眠 休眠是…...

ChatGPT调教指北,技巧就是效率!

技巧就是效率 很多人都知道ChatGPT很火很强,几乎无所不能,但跨越了重重门槛之才有机会使用的时候却有些迷茫,一时间不知道如何使用它。如果你就是把他当作一个普通的智能助手来看待,那与小爱同学有什么区别?甚至还差劲…...

Android启动流程(五)——init进程对子进程的监控

init进程会读取rc文件,然后孵化很多其他系统服务进程,为防止子进程死亡后称为僵尸进程,init需要监测子进程是否死亡,如果死亡,则清除子进程资源,并重新拉起进程。 system/core/init/init.cpp InstallSigna…...

Python每日一练:蚂蚁家族(详解集合法)

文章目录 前言一、题目二、代码分析总结 前言 这题挺有意思,感觉评简单难度有点低了,如果正经用无向图来做,代码还是有点长的。首先得建立节点,估计除第一个和最后一个每个节点都是一条线连进,一条线连出的。就可以这…...

图神经网络:在KarateClub数据集上动手实现图神经网络

文章说明: 1)参考资料:PYG官方文档。超链。 2)博主水平不高,如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 文献阅读:代码实操: 文献阅读: 参考文…...

ArduPilot之开源代码调试技巧

ArduPilot之开源代码调试技巧 1. 源由2. ArduPilot Code Debugging Part13. ArduPilot Code Debugging Part24. 持续更新中。。。5. 参考资料 1. 源由 对于如何调试和验证ArduPilot,对于新手来说,有的时候反而是入门的一个门槛。 其实这个并不难&#…...

Linux网络基础-2

在之前的网络基础博客中,我们对网络的基本概念进行了一个简单的介绍,那么接下来的网络内容中,我们将对网络通信中的典型协议进行详细解释。 我们根据网络协议中的分层来对典型协议进行注意介绍,不过对于物理层的传输我们不做考究…...

软件测试报告模板

目录 2 1 概述... 3 1.1 测试目的... 3 1.2 测试策略... 3 1.3 测试方法... 3 1.4 计划验收标准... 3 1.5 测试用例... 4...

记一次azkaban调度异常处理

一、背景 预发布环境使用的数据库性能比较低,根据业务测试的需求,需要将数据库更换成 稳定高性能的数据库。更换业务数据库后azkaban定时任务失败 二、数据库服务信息 说明:该部分使用代号来代替,非真实信息 该数据库存储了azka…...

开发一个vue自定义指令的npm库-系列三:使用rollup打包npm库并发布

配置 rollup 使用rollup将 TypeScript 代码转换为 JavaScript,然后进行压缩和输出到目标文件。 项目根目录新建rollup.config.js import typescript from "rollup/plugin-typescript"; import terser from "rollup/plugin-terser"; import de…...

C嘎嘎的运算符重载基础教程以及遵守规则【文末赠书三本】

博主名字:阿玥的小东东 大家一起共进步! 目录 基础概念 优先级和结合性 不会改变用法 在全局范围内重载运算符 小结 本期送书:盼了一年的Core Java最新版卷Ⅱ,终于上市了 基础概念 运算符重载是通过函数重载实现的&#xf…...

【MCAL_UART】-1.2-图文详解RS232,RS485和MODBUS的关系

目录 1 UART,RS232和RS485通信拓扑 2 什么是RS232 2.1 RS232标准的演变 2.2 RS232标准讲了哪些 2.2.1 RS232通信的电平 2.2.2 RS232通信的带宽 2.2.3 RS232通信距离 2.2.4 RS232通信的机械接口 3 什么是RS485 3.1 RS485标准的演变 3.2 RS485标准讲了哪些…...

设计模式详解(二)——单例模式

单例模式简介 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛,它提供了一种创建对象的最佳方式。 单例模…...

为什么hooks不能在循环、条件或嵌套函数中调用

hooks不能在循环、条件或嵌套函数中调用 为什么&#xff1f; 带着疑问一起去看源码吧&#xff5e; function App() {const [num, setNum] useState(0);const [count, setCount] useState(0);const handleClick () > {setNum(num > num 1)setCount(2)}return <p …...

互联网赚钱项目有哪些?目前最火的互联网项目

互联网是一个神奇的行业&#xff0c;大门不出二门不迈&#xff0c;一根网线一台电脑&#xff0c;甚至一台手机就可以赚钱。它给我们创造了前所未有的商业机会&#xff0c;让成千上万有梦想&#xff0c;敢想敢干的人通过互联网获得了巨大的成功&#xff01;正因为如此&#xff0…...

队列、栈专题

队列、栈专题 LeetCode 20. 有效的括号解题思路代码实现 LeetCode 921. 使括号有效的最少添加解题思路代码实现 LeetCode 1541. 平衡括号字符串的最少插入次数解题思路代码实现 总结 不要纠结&#xff0c;干就完事了&#xff0c;熟练度很重要&#xff01;&#xff01;&#xff…...

TensorFlow vs PyTorch:哪一个更适合您的深度学习项目?

在深度学习领域中&#xff0c;TensorFlow 和 PyTorch 都是非常流行的框架。这两个框架都提供了用于开发神经网络模型的工具和库&#xff0c;但它们在设计和实现上有很大的差异。在本文中&#xff0c;我们将比较 TensorFlow 和 PyTorch&#xff0c;并讨论哪个框架更适合您的深度…...

大项目环境配置

目录 Linux的龙蜥8是什么&#xff1f; OpenGL是什么&#xff1f; 能讲讲qt是什么吗&#xff1f; 我可以把qt技术理解为c工程师的前端开发手段吗&#xff1f; 我其实一直有些不懂大家所说的这个开发框架啥的&#xff0c;这个该如何理解呢 那现在在我看来&#xff0c;框架意…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...