[Unity] Unity Cursor 样式设置和API解析

[Unity] Unity Cursor 样式设置和API解析一直以来使用 Unity 没有系统的使用 Unity Cursor 样式等的修改 其实也就几个变量和函数 现在做项目正好总结 CursorLockMo 枚举 赋值变量 Cursor lockState CursorLockMo None 无限制状态 相对与后面两个枚举量

大家好,我是讯享网,很高兴认识大家。

一直以来使用Unity没有系统的使用 Unity Cursor 样式等的修改,其实也就几个变量和函数。现在做项目正好总结

CursorLockMode 枚举,赋值变量:Cursor.lockState
  • CursorLockMode.None:无限制状态(相对与后面两个枚举量)
  • CursorLockMode.Locked :锁定后,光标将放置在视图的中心,并且无法移动。不管Cursor.visible的值如何,在此状态下,光标都是不可见的。按ESC键时,光标会暂时切换到None,当点击鼠标时,又自动回到Locked模式。
  • CursorLockMode.Confined :当被限制时,除了被限制在视图之外,光标的行为正常。(即窗口模式下,鼠标无法出现在窗口外)
if (m_cursorLockMode == CursorLockMode.Locked) //Pointer处于Locked状态 Cursor.lockState = m_cursorLockMode = CursorLockMode.Confined; 

讯享网

注意:上述代码亲测,发现当执行进入if将状态从Locked改为Confined时,Pointer虽然可见,但仍旧被锁在屏幕中心。移动鼠标Pointer也不会移动。因此,建议Pointer显隐用“Locked <—> None”两者转换。


讯享网

CursorMode 枚举,用于作为SetCursor函数的参数
  • auto: 在支持的平台上使用硬件渲染来渲染鼠标光标。
  • ForceSoftware:强制使用软件游标。
Cursor.visible Bool

鼠标的可见性

Cursor.SetCursor( Texture2D,Vector2, CursorMode )
  • Texture2D:鼠标更改的贴图
  • Vector2:用贴图左上角坐标起始点。一般设为Vector2.zero
  • CursorMode:该cursorMode参数允许您在支持的平台上使用硬件光标,或强制对光标进行软件渲染
若要更改整个项目的默认鼠标样式可以在Edit->Project Setting->Player->Default Cursor中设置,将更改好的图片拖拽赋值即可

我项目中的代码示例:
  • 文件名:FPS_Cursor.cs
  • 有些变量已经在其他地方封装(例如:input)
讯享网/* * 编写时间:2020.3.2 * 脚本内容:关于光标(Cursor) * 修改记录: * */ public class FPS_Cursor : MonoBehaviour { [Header("光标贴图")] public Texture2D m_cursorTex; [Header("光标状态")] public CursorLockMode m_cursorLockMode; [Header("设置光标贴图时使用")] public CursorMode m_cursorMode; //输入模块 private FPS_Input input; private void Start() { //初始化变量 input = GameObject .FindGameObjectWithTag(Tags.GameController) .GetComponent<FPS_Input>(); Cursor.lockState = m_cursorLockMode; //设置Point模式,默认锁定 Cursor.SetCursor(m_cursorTex, Vector2.zero, m_cursorMode); //设置Point样式, } private void Update() { if(input.GetButtonDown(ConstString.ShowOrHideCursor)) { if (m_cursorLockMode == CursorLockMode.Locked) //Point处于Locked状态 Cursor.lockState = m_cursorLockMode = CursorLockMode.None; else if (m_cursorLockMode == CursorLockMode.None) //Point处于Confined状态 Cursor.lockState = m_cursorLockMode = CursorLockMode.Locked; } } } 
小讯
上一篇 2025-03-19 07:36
下一篇 2025-04-10 21:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/30150.html