Unity 鼠标操作

1、隐藏鼠标

Cursor.visible = false/true;

2、锁定鼠标

Cursor.lockState =CursorLockModeNone:不锁定
Locked:锁定在中心点且隐藏,通过Esc解除
Confined:限制在窗口范围内,通过Esc接触

3、设置鼠标图片

// 参数一:光标图片(Texture2D)
// 参数二:偏移位置(相对图片的左上角)
// 参数三:平台支持的光标模式(硬件或软件)

public Texture2D tex;
Cursor.SetCursor(tex, Vector2.zero, CursorMode.Auto);

但是要注意,如果鼠标图片的宽高不一致,那么最终显示效果可能会变形

如果图片背景不是半透明,在图片的Texture Type中选择Cursor,点击Apply

### Unity鼠标事件处理与交互 #### 使用 `EventTrigger` 组件进行 UI 和 3D 物体的交互 对于 UI 的拖拽操作,推荐使用 `EventTrigger` 组件来处理。该组件提供了多种触发条件,可以方便地响应用户的输入行为[^1]。 ```csharp using UnityEngine; using UnityEngine.EventSystems; public class UIDragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public void OnBeginDrag(PointerEventData eventData) { // 开始拖拽时的操作 } public void OnDrag(PointerEventData eventData) { // 正在拖拽中的操作 } public void OnEndDrag(PointerEventData eventData) { // 结束拖拽后的操作 } } ``` #### 处理 3D 物体的拖拽 针对 3D 物体的拖拽,则更适合采用基于物理系统的解决方案。下面是一个简单的例子展示如何让玩家通过点击并拖动的方式移动场景内的对象: ```csharp using UnityEngine; public class ObjectDragger : MonoBehaviour { public Camera mainCamera; // 主摄像机引用 private void OnMouseDrag(){ Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if(Physics.Raycast(ray, out hitInfo)){ transform.position = new Vector3( hitInfo.point.x, hitInfo.point.y + 0.5f, hitInfo.point.z ); Debug.DrawLine(ray.origin, hitInfo.point, Color.red); } } } ``` 这段代码实现了当用户按下某个游戏物件后,在保持按键的同时移动鼠标即可改变其位置的功能[^4]。 #### 实现通用的鼠标交互逻辑 为了简化开发流程以及提高代码复用率,建议创建一个基类接口用于定义常见的鼠标交互模式(比如单击、双击),并将具体的实现留给各个子类完成。这样的设计允许开发者仅需在一个地方配置好射线检测机制就能轻松管理多个目标的行为反应[^3]。 ```csharp // 定义接口 public interface IMouseInteractable { void OnSingleClick(); void OnDoubleClick(); } // 创建具体实现类 public class InteractiveObject : MonoBehaviour, IMouseInteractable { public void OnSingleClick() { // 单击时的动作 } public void OnDoubleClick() { // 双击时的动作 } } ``` 以上就是关于 Unity 中几种常见类型的鼠标事件及其对应的编程实践介绍。希望这些信息能够帮助到正在学习或工作的朋友们!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值