一直以来使用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; } } }

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