Unity 进阶 之 简单模仿鼠标交互(场景:手机屏幕当做触摸板Touch Pad,移动鼠标,鼠标确定等操作)

这篇博客介绍了如何在Unity中将手机屏幕作为触控板,模拟鼠标的移动和点击交互。通过监听Input.GetMouseButtonDown、GetMouseButton和GetMouseButtonUp事件获取位置信息,结合EventSystem的RaycastAll方法实现UI交互。在实现过程中需要注意屏幕适配、移除或禁用StandaloneInputModule,以及处理可能的遮挡问题。博客提供了效果预览、实现步骤和关键代码,适用于Unity开发者参考学习。

 Unity 进阶 之 简单模仿鼠标交互(场景:手机屏幕当做触摸板Touch Pad,移动鼠标,鼠标确定等操作)

目录

 Unity 进阶 之 简单模仿鼠标交互(场景:手机屏幕当做触摸板Touch Pad,移动鼠标,鼠标确定等操作)

一、简单介绍

二、实现原理

三、注意事项

四、效果预览

五、实现步骤

六、关键代码


一、简单介绍

Unity中的一些知识点整理。

本节简单介绍在Unity开发中的,因为项目的开发需要,需要把手机屏幕当做触控板,模拟鼠标移动和点击交互等,所以这里简单的整理一些,或许场景不同,你可能需要进行屏幕适配,这里仅供参考学习使用,如果你有新的方式也可以留言,多谢。

二、实现原理

1、这里使用 Input.GetMouseButtonDown(0) 、Input.GetMouseButton(0) 、Input.GetMouseButtonUp(0) 相关事件来获取位置相关信息进行处理,用来当做UI射线交互的位置

2、获取当前的 UI 的 EventSystem,然后进行对应改写,关键代码如下

m_eventSystem = EventSystem.current; // 获取当前的 EventSystem
m_pointerEvent = new PointerEventData(m_eventSystem);
m_pointerEvent.button = PointerEventData.InputButton.Left;

m_pointerEvent.position = mFunPointerPos != null ? mFunPointerPos.Invoke() : new Vector2(Screen.width * 1 / 2, Screen.height / 2); // 这里就是模拟鼠标位置

List<RaycastResult> raycastResults = new List<RaycastResult>();
m_eventSystem.RaycastAll(m_pointerEvent, raycastResults);

三、注意事项

1、使用场景不同,可能需要做适当的屏幕适配

2、因为使用模拟鼠标交互,EventSystem 上默认的 Standalone Input Module 最好移除或者禁用,不然可能影响模拟的鼠标交互操作

3、可能有些情况模拟的鼠标会被遮住,你可以进行对应处理,可以调整UI层级,可以换种方式显示模拟鼠标,可以添加材质调整渲染队列,等

四、效果预览

五、实现步骤

1、打开 Unity ,新建空工程

2、布置场景,一个是模拟的鼠标点,一些事交互控件

3、创建脚本,编写对应的逻辑代码,实现对应功能,IMouseGesturePointerCallback 回调接口,MousePointerMoveWrapper 鼠标位置,ScreenRayRaycasterUIWrapper 获取改写EventSystem当前的UI交互等等

4、 把脚本挂载到场景中,并对应把模拟的鼠标赋值,如图

5、这里Button 设置如下,并挂载一个脚本,用来点击交互,计数使用,方便效果演示

6、EventSystem 上默认的 Standalone Input Module 最好移除或者禁用,不然可能影响模拟的鼠标交互操作

7、运行场景,点击屏幕,移动,就可看到对应鼠标移动,并能简单交互  ,效果如上

六、关键代码

1、TestMousePointerInteraction

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙魁XAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值