关于Unity中NGUI图片精灵响应鼠标的方法
我在Unity里做NGUI的时候发现一个问题。
在Unity2D场景当中,一个精灵图片只要加上了Box Collider或者Box Collider2D,就可以相应OnMouseEnter和OnMouseExit事件,而到了NGUI里就不能响应了。
这真是一个大坑
虽然说NGUI提供了按钮组件,但是如果我们想要自己定制一个按钮的话,失效的那两个事件是不可或缺的。
在网上找了很久,我依旧没能找到相关问题的回答,是的,似乎很少有人碰到这个问题(难道是我新手的原因?)。
故私再次记录下我的解决方法。
好在身边有一本前不久买来的还没有来得及看的《Unity3D NGUI 实战教程》高雪峰编著,高先生看到这篇文章请自行缴纳广告费(逃),在里面我看到了这么一句话:只要这个控件上有BoxCollider,我们就可以在脚本中通过OnClick()、OnHover()等事件监听函数去触发一个响应事件。
桥的麻袋?OnHover()?interesting。
于是就去试了一下
void OnHover()
{
Debug.Log("OnHover");
}
神奇的事情发生了
是的,你没有看错,两个Log。检查表示我开启了Collapse。再仔细观察可以发现当我的鼠标进入范围的时候打出第一个log,离开后打出第二个log,也就是说当鼠标进入和离开的时候都会触发一次OnHover();
于是我笑了,写了个假的OnMouseEnter()和OnMouseExit();
private bool isEnter = false; void OnHover()
{
isEnter = !isEnter;
if (isEnter)
{
OnMouseEnter();
}
else
{
OnMouseExit();
}
}
private void OnMouseEnter()
{
Debug.Log("Enter");
}
private void OnMouseExit()
{
Debug.Log("Exit");
}
//////////////////////2017年8月3日20时34分 更新//////////////////////////////////////////////
除了上述的方法外,还有一个比较正统的方法:EvenTrigger组件
然后把脚本拖到相应的EvenDelegate里去再选择相应事件要执行的方法即可。
也可以用脚本动态的添加。
using UnityEngine; namespace Assets.Scripts
{
class EvenTriggerTest:MonoBehaviour
{
UIEventTrigger ET; private void Start()
{
ET = GetComponent<UIEventTrigger>();
EventDelegate EDHoverOver = new EventDelegate(this, "MyOnHoverOver");
ET.onHoverOver.Add(EDHoverOver);
} private void MyOnHoverOver()
{
Debug.Log("HoverOver");
}
}
}
关于Unity中NGUI图片精灵响应鼠标的方法的更多相关文章
- Android EditText中插入图片并响应点击事件
EditText中插入图片基本就是两种方法: ,通过Html.fromHtml(..)来实现 [mw_shl_code=java,true]eText.append(Html.fromHtml(&qu ...
- Excel中把图片合并进图表的方法介绍
方法一: 使用“图案”对话框 双击某个数据系列,选择“图案”标签,单击“填充效果”按钮,在“填充效果”对话框中选择“图片”标签,单击“选择图片”按钮,选择一个要使用的图形文件即可. 方法二: 使用剪贴 ...
- 关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现
Tab商城实例 UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备) 1.创建两个个UI Sprite,Sprite1和Sprite2 2.给Spri ...
- 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式
Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...
- 关于Unity中NGUI的3D角色血条的实现
首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...
- 关于Unity中NGUI的背包实现之Scrollview(基于Camera)
基于UIPanel的scrollview实现方式在移动设备上的性能不如基于camera的方式.因为UIPanel的scrollview实现方式要渲染很多的道具图,性能自然就降低了.如果是用第二个摄像机 ...
- unity中让物体移动到鼠标点击地面任一点的位置(单击移动和双击暂停移动)并生成图标
using UnityEngine; using System.Collections.Generic; using UnityEngine.EventSystems; using UnityEngi ...
- 关于Unity中NGUI的帧动画和Tween动画
帧动画 1.把三张帧动画的贴图png制作成图集,NGUI---->Open---->Atlas Maker,生成一个预制体,一个材质球,一个大图 2.创建一个Sprite类型的Sprite ...
- 关于Unity中NGUI的Pivot和锚点
Pivot 1.创建一个Sprite类型的Sprite1节点,关联一个图集和一张贴图,用图中的六个按钮调整这个贴图的Pivot点,一共有八个点可以选择 2.再创建一个Sprite类型的Sprite2节 ...
随机推荐
- android scrollview 属性
理论部分1.ScrollView和HorizontalScrollView是为控件或者布局添加滚动条2.上述两个控件只能有一个孩子,但是它并不是传统意义上的容器3.上述两个控件可以互相嵌套4.滚动条 ...
- sys用户密码丢失找回密码的步骤和命令
假设你的sys用户密码丢失,写出找回密码的步骤和命令? 1.确认哪个数据库实例的sys用户密码丢失:(例:数据库实例为orclA) 2.进入数据库实例的目录中找到PWDorclA.ora文件:(例目录 ...
- 团队作业7——第二次项目冲刺(Beta版本12.04)
1.当天站立式会议照片 本次会议内容:1:每个人汇报自己完成的工作.2:组长分配各自要完成的任务. 2.每个人的工作 黄进勇:项目整合,后台代码. 李勇:前台界面优化. 何忠鹏:数据库模块. 郑希彬: ...
- 玩转Leveldb原理及源码--拙见1
可以说是不知天高地厚.. 可以说是班门弄斧.. 但是,我今天还就这样走了,我喜欢!!!!!! 注:后续文章,限于篇幅,不懂名词都有 紫色+下划线 超链接,有兴趣,可以查阅: 网上关于Leveldb 的 ...
- HTTP协议以及HTTP2.0/1.1/1.0区别
HTTP协议以及HTTP2.0/1.1/1.0区别 一.简介 摘自百度百科: 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所 ...
- jhipster生成项目无法使用restful请求,报access_denied 403错误
写在前边: 我们的微服务是注册中心.uaa.gateway为基础,添加微服务应用,昨天下午在测试jhipster的增删改查,因为jhipster生成的代码都是restful的,好不容易找到网关配置的映 ...
- httpClient解决post请求重定向的问题
import com.dadi.saas.util.HTTPUtils; import org.apache.commons.httpclient.Header; import org.apache. ...
- 新概念英语(1-107)It's Too Small.
Lesson 107 It's too small. 太小了. Listen to the tape then answer this question. What kind of dress doe ...
- 新概念英语(1-93)Our new neighbour
Lesson 93 Our new neighbour 我们的新邻居 Listen to the tape then answer this question. Why is Nigel a luck ...
- Spark入门(1-2)Spark的特点、生态系统和技术架构
一.Spark的特点 Spark特性 Spark通过在数据处理过程中成本更低的洗牌(Shuffle)方式,将MapReduce提升到一个更高的层次.利用内存数据存储和接近实时的处理能力,Spark比其 ...