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

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值