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鼠标光标使用学习

unity text实现鼠标光标

Unity RigidBodyFPSController 鼠标不显示

Deepin中使用Unity, 解决光标问题

UNITY3D切换到GUI场景鼠标就消失了用Cursor.visible=(true);光标就在中间不动了,怎么让光标移动?

Java 鼠标获取 JTable 位置的移动