Unity鼠标光标使用学习
Posted 生活在他方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity鼠标光标使用学习相关的知识,希望对你有一定的参考价值。
Unity下的鼠标光标程序相关的就一个类下的2、3个方法。
首先,光标导入图片的设置需要将类型设置为Cursor。
设置鼠标光标的方法就一个,SetCursor。第一个参数是图片,第二个参数是点击点的偏移量,第三个参数是类型。
public Texture2D texture;
void Start()
Cursor.SetCursor(texture, new Vector2(40, 4), CursorMode.Auto);
当使用CursorMode.Auto的时候,会使用硬件进行光标处理。性能好,兼容好。但是,在windows系统下,会强制把光标大小缩小到32*32。
当使用CursorMode.ForceSoftware的时候,会使用软件来处理光标。在windows系统下想要鼠标光标变大这是唯一的方法,但是偶尔会有小bug。在使用中发现unity2022.1+HDRP环境下,图片颜色会变深。
要实现图标动画的话,只能一张一张的图片轮流替换。CodeMonkey大佬有提供光标动画的代码,我就直接抄过来了。
[CreateAssetMenu]
public class CursorAnimation : ScriptableObject
public CursorType cursorType;
public Texture2D[] textureArray;
public float frameRate;
public Vector2 offset;
public class CursorMananger : MonoBehaviour
public CursorAnimation[] cursorAnimations;
private CursorAnimation currentAnimation;
private float frameRate;
private int frameCount;
private int currentFrame;
private float frameTimer;
private void Start()
SetActiveCursorAnimation(cursorAnimations[0]);
private void Update()
frameTimer -= Time.deltaTime;
if (frameTimer <= 0f)
frameTimer += frameRate;
currentFrame = (currentFrame + 1) % frameCount;
Cursor.SetCursor(currentAnimation.textureArray[currentFrame], currentAnimation.offset, CursorMode.Auto);
if (Input.GetKeyDown(KeyCode.A)) SetActiveCursorAnimation(cursorAnimations[(int)CursorType.Arrow]);
if (Input.GetKeyDown(KeyCode.S)) SetActiveCursorAnimation(cursorAnimations[(int)CursorType.Star]);
private void SetActiveCursorAnimation(CursorAnimation value)
currentAnimation = value;
currentFrame = 0;
frameTimer = value.frameRate;
frameCount = value.textureArray.Length;
B站光标效果演示视频:https://www.bilibili.com/video/BV1EN4y1j7Ne/
以上是关于Unity鼠标光标使用学习的主要内容,如果未能解决你的问题,请参考以下文章
Unity RigidBodyFPSController 鼠标不显示
UNITY3D切换到GUI场景鼠标就消失了用Cursor.visible=(true);光标就在中间不动了,怎么让光标移动?