Unity 鼠标个性化

  最初的版本,API是可以直接设置鼠标显示与否的,新版本就改了,先上下旧店的版本的;

  1.思路:

  •   在某些游戏下,经常会隐藏鼠标,或者有绚丽的动画来代替鼠标显示。
  •   原理就是将鼠标隐藏(不显示)起来,设置一个sprite的坐标为鼠标坐标即可。当然代码要放到 Update里才行。
  •   注意事项:此脚本不能挂在Camera上,否则会出现鼠标闪烁的情况。

  顺带贴上一个之前的脚本:

  

实例代码:

public dfGUICamera Camera;
public dfSlicedSprite sprite;
public float value = 0f;

void Update()
{
//隐藏鼠标
Screen.showCursor = false;
sprite.transform.position = Camera.camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,Input.mousePosition.z));
}

  2.首先,用来做鼠标个性化的图片,格式要是Cursor;见下图:

  

第二步:脚本挂载,写脚本;将默认的和点击时的鼠标图,拖拽进去即可;

    public Texture2D norT;
    public Texture2D pressT;
    private Vector2 hotspot;
    void Start () {
        //Screen.showCursor = false;//outofDate
        //Cursor.SetCursor(norT, hotspot, CursorMode.Auto);
    }
    private void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Cursor.SetCursor(pressT, Vector2.zero, CursorMode.Auto);
            //Cursor.SetCursor(pressT, hospot, CursorMode.Auto);
            //hotspot:The offset from the top left of the texture to use as the target point (must // be within the bounds of the cursor). 默认选择Vector2.zero
            //从纹理顶部的偏移量作为目标点(必须//位于游标的范围内)
        }
        else
        {
            Cursor.SetCursor(norT, Vector2.zero, CursorMode.Auto);
        }
    }
 

  简单说下, 上面的方法里实现了鼠标左键点击就会把鼠标的图设置成对应的图片。

代码里cursorMode = CursorMode.ForceSoftware;这个模式是说当鼠标改变了以后,鼠标移到Unity窗口外(例如你打开一个别的软件)Unity里的鼠标依然不会消失而且是设定的图标。

  若cursorMode = CursorMode.Auto这种模式,鼠标样式只有一个,当你移到Unity窗口外,Unity里就没有鼠标了。

原文地址:https://www.cnblogs.com/allyh/p/9349571.html

时间: 2024-10-03 19:26:45

Unity 鼠标个性化的相关文章

unity 鼠标拖拽物体实现任意角度自旋转

主要涉及函数 Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量 Input.GetAxis(“Mouse y”) 可取得鼠标竖向(y轴)移动增量 通过勾股定理获取拖拽长度,长度越长旋转越快 在project setting--Input 可以设置 直接上代码,看了就明白了 1 using UnityEngine; 2 using System.Collections; 3 4 public class startRoate : MonoBehaviour 5 {

[Unity菜鸟] Unity鼠标双击,鼠标函数整理(未完)

1. 鼠标双击 ? 1 2 3 4 5 6 7 8 9 void OnGUI()    {        Event Mouse = Event.current;        if (Mouse.isMouse && Mouse.type == EventType.MouseDown && Mouse.clickCount == 2)        {            // 调用你的函数            print("Double Click&quo

unity 鼠标拖带

组场景时,经常需要获取鼠标(或者点击)开始结束时讯息(包括开始拖动时的事件以及对应的坐标),unity为我们提供了两个接口来实现相关方法之前在Unity基础命令中也提到过. 在此在重申一下,两个接口对应两个方法,即可以对应开始结束拖动时的事件,数据则为eventData中. public void OnBeginDrag(PointerEventData eventData) public void OnEndDrag(PointerEventData eventData) public cla

Unity 鼠标控制视角功能和动画播放冲突解决办法

环境是 unity 5.6.4 情况说明: 1 模型动画单独播放是没问题的. 2 鼠标控制模型是没问题的. 3 在start中播放模型动画,即使鼠标控制视角代码还挂载着,但是模型却无法用鼠标旋转等操作. 解决办法 给模型动画添加父级Gameobject,用鼠标控制模型的父级旋转,而不是直接控制模型旋转,这样播放动画和鼠标功能都可以使用. 原文地址:https://www.cnblogs.com/tianyiwuying/p/11193958.html

unity, 鼠标与场景交点

在鼠标与场景交点上放一个mark,并于1s后消失: 新建一个空GameObject,命名为moushHitTest,添加下面脚本: using UnityEngine;using System.Collections; public class mouseHit : MonoBehaviour {    public GameObject m_moushHitMarkPrefab;    // Use this for initialization    void Start () {     

Unity 鼠标点击左右移动,人物跟随旋转

上代码: using UnityEngine; using System.Collections; public class Test : MonoBehaviour { private Vector3 startPosition; //鼠标按钮的坐标点 private float x; public bool isDown; //表示鼠标是否按下 public void OnMouseDown() { isDown = true; startPosition = Input.mousePosi

Unity鼠标位置转世界坐标

1 using UnityEngine; 2 using System.Collections; 3 /// <summary> 4 /// 鼠标位置控制世界空间对象坐标 5 /// 因为只能控制2维坐标,所以要注意相机所看向的方向,及移动对象的坐标轴 6 /// </summary> 7 public class MyTest : MonoBehaviour { 8 9 public Transform Obj;//参考对象 10 private float posX, posY

Unity鼠标移动到物体上显示信息

相信大家玩游戏的时候,鼠标移动到游戏装备上,都会显示装备的的具体信息,那么接下来就写代码把,废话不多说. 下面是 效果图 鼠标移动到装备位置显示的信息,鼠标移动不在装备区域后不现实信息,下面是代码 : using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems; public class onmois : MonoBehaviour, IPointerEnterHan

Unity 鼠标拖拽旋转物体

using UnityEngine; public class RotateObj : MonoBehaviour { public float OffsetX = 0; public float OffsetY = 0; public float speed = 6f;//旋转速度 void Update() { if (Input.GetMouseButton(0)) { OffsetX = Input.GetAxis("Mouse X");//获取鼠标x轴的偏移量 OffsetY