我是靠谱客的博主 害羞超短裙,这篇文章主要介绍Unity关于OnMouseEnter()和OnMouseExit()事件的坑,现在分享给大家,希望可以做个参考。

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

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

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

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

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

下面附上我的测试代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 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

最后

以上就是害羞超短裙最近收集整理的关于Unity关于OnMouseEnter()和OnMouseExit()事件的坑的全部内容,更多相关Unity关于OnMouseEnter()和OnMouseExit()事件内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部