这篇文档写了三部分:CursorLock枚举、Cursor类、CursorMode枚举
做手游的话还是不用理会的
用于设置 鼠标光标(mouse pointer)
仅在 macOS、Windows、Linux 支持,在其他不支持的平台上使用默认的
Windows Store Apps:仅支持 hardware cursor,PlayerSettings.defaultCursor
hardware cursor :PlayerSettings.defaultCursor
sofrware cursor :运行时使用 Cursor.SetCursor
注意:相关贴图必须在导入设置中设为 cursor |
---|
CursorLockMode 枚举
How the cursor should behave.
These are a various modes that control the behaviour of the Cursor. A default cursor must be set in PlayerSettings > Default Cursor.
None —— 没有做任何更改
Locked —— 锁定在视图中心,不显示光标(此时忽略Cursor.visible的设置)
Confined —— 将光标限定在游戏窗口(在Unity编辑器中没啥影响,没有Build一个试试)
Cursor静态属性 (lockState visible)
举个例子,PC端游戏有些不需要显示光标,但是需要鼠标来点击、已经旋转镜头,
此时如果是窗口模式,鼠标光标不限定在窗口内,那么会点到其他程序或桌面上,而且鼠标离开游戏镜头不再旋转,
这样就很不合理。。。。。。
Cursor.lockState |
---|
确定硬件指针是锁定到视图的中心,还是被约束到窗口,还是根本不受约束。
锁定后,光标将放置在视图的中心,无法移动。光标在这种状态下是不可见的,不管Cursor.Visible的值如何。
在受限时,游标的行为正常,但受限于视图除外。例如,如果应用程序在窗口中运行,则鼠标光标不能将窗口保留在受限模式下。
要提供良好的用户体验,建议的行为只是锁定或限制光标作为用户操作的结果,例如提供一个按钮。
游标状态可以由操作系统或统一来更改。因此,您应该检查光标的状态,例如当应用程序恢复焦点或游戏状态更改以显示UI时。在编辑器中,当按Escape或切换应用程序时,光标会自动重置。在独立播放器中,您可以完全控制鼠标光标,但切换应用程序仍然重置游标。
Cursor.visible |
---|
可读可写,获取设置鼠标光标的显示隐藏。
特殊情况:当CursorLockMode.Locked模式,鼠标光标是一定不可见的
Cursor静态方法 (SetCursor)
Cursor.SetCursor
用到一个Texture2D
//texture —— texture2D,导入设置为Cursor、或者“Read/Write enabled”
//hotspot —— 要用作目标点的纹理左上角的偏移量(必须在光标的范围内)。一般用 Vector2.zero
//cursorMode —— 允许此游标在受支持的平台上呈现为硬件游标,或强制软件游标。
public static void SetCursor(Texture2D texture, Vector2 hotspot, CursorMode cursorMode);
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
public Texture2D cursorTexture;
public CursorMode cursorMode = CursorMode.Auto;
public Vector2 hotSpot = Vector2.zero;
void OnMouseEnter()
{
Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);
}
void OnMouseExit()
{
Cursor.SetCursor(null, Vector2.zero, cursorMode);
}
}
CursorMode枚举
上边用到的 CursorMode
确定是否使用软件渲染渲染鼠标光标,或者在支持的平台上硬件渲染。
software rendering:用程序中指定的光标
hardware rendering:用PlayerSetting中设置的光标
public enum CursorMode
{
Auto, //在支持的平台上使用 hardware cursor(mac、windows、linux)
ForceSoftware //强制使用 Software cursor
}