Unity关于OnMouseEnter()和OnMouseExit()事件的坑

Unity关于OnMouseEnter()和OnMouseExit()事件的坑

今天突然想要更改一下鼠标的图片,然后就用到了OnMouseEnter()和OnMouseExit()这两个函数,然后我的这两个事件一直触发不了,然后百度了很多也没有解决,后来我自己各种尝试终于解决了,下面先来介绍一下这两种事件一般的触发条件。

对于该类事件 OnMouseEnter,OnMouseExit,OnMouseDown,OnMouseUp ……
OnMouseEnter()这个方法就是他需要通过鼠标的射线检测来判断你鼠标当前位置是否是你想触碰的物体.
最容易忽略的一点是 :这个脚本一定要挂在你所要检测的物体身上(我就是没挂然后各种没反应)

1、触发组件
这些事件在一般情况下需要配合触发组件发才能生效,触发组件可以是碰撞器 Collider或者刚体Rigidbody 。
如果在一个GameObject下同时存在这两种组件,则触发时会遇到不可预知的触发状态,因此使用时需要分开处理比较合适。

2、触发层
当前附带(碰撞器 Collider或者刚体Rigidbody)触发组件的 GameObject 物体并不在摄像机可见层 Layer 时,鼠标操作是无法被侦测到的。

下面附上我的测试代码:

// An highlighted block
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChangeMouseTexture : MonoBehaviour {

    // Use this for initialization
    public Texture2D cursorTexture;
    public Vector2 hotSpot = Vector2.zero;
    public CursorMode cursorMode = CursorMode.Auto;
	void Start () {
        //Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);
	}
	
	// Update is called once per frame
	void Update () {
		
	}
    void OnMouseEnter()
    {
        print("进入");
        //检测到物体时更改鼠标图标并且更改物体颜色
        Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);
        this.GetComponent<MeshRenderer>().material.color = Color.yellow;

    }

    void OnMouseExit()
    {
        //离开时恢复成默认
        Cursor.SetCursor(null, Vector2.zero, cursorMode);
        this.GetComponent<MeshRenderer>().material.color = Color.white;

    }

}

参考: [link]https://blog.csdn.net/kenshako/article/details/8937906

你可能感兴趣的:(踩坑)