ngui ngui按钮没反应穿透,场景物品被触发 能解决吗

trunsun的贴吧
该用户已隐藏个人动态Ngui 五种点击事件实现方式及在3d场景中点透的情况 - CSDN博客
Ngui 五种点击事件实现方式及在3d场景中点透的情况
Ngui 五种点击事件实现方式及在3d场景中点透的情况 ...
/thread-.html
(出处: -游戏开发者社区【游戏蛮牛】unity3d官网)
ngui作为界面插件之一中,无疑是最好用,使用最多的了从自学unity到现在界面一直使用它
由于它的持续更新,我在此不得不说,确实很为开发者作想,为什么这么讲呢?
大概在去年吧&&当时用的那个版本已经不记得了,
反正就是有个需求,要实现“无限循环”拖动,使用过以前ngui的人就知道当时是没有这个功能的,
后来被自己弄出来没几天,就发现新版本中就自带了这样的东西,
也就是如今ngui列子中的 Endless Scroll Views,
当时,记得好像还心里暗骂了“坑爹”。
好啦,可能稍微有些偏题了,现在进入正题:
ngui点击事件我在此分为5种不同写法来总结
一.OnClick
OnClick作为传统的单击事件,其实真心好用,
usingUnityE
usingSystem.C
public class onclicktest : MonoBehaviour {
publicvoidOnClick()
Debug.Log(&你通过OnClick点击了我!&);
不管你是界面按钮 还是3d物体对象(需要加BoxCollider)都可用
可是,太麻烦,不好管理。
二.SendMessage
1.SendMessage是属于Ngui老版本的一种事件实现方式了,在此就简单说下了
Target:接收按钮消息的游戏对象。
Function Name:接收按钮消息的方法,拥有这个方法的脚本必须绑定在上面Target对象身上。
Trigger:触发的事件。
Include Children&:是否让该对象的所有子对象也发送这个点击事件。
缺点:不直观,太多拖动操作,效率略低
三.通过UIButton属性面板附加事件
首先,在代码中写你要做的事情,
public class ClickTest : MonoBehaviour
//通过UIButton属性面板附加事件,该事件方法必须加public修饰
public void btn_Click()
&span style=&white-space:pre&& &/span&Debug.Log(&你通过UIButton属性面板附加事件点击了我!&);
然后,拖动绑该代码定到场景任意对象上,
最后,选择你要点击的按钮,把刚才绑定代码的对象拖到,UIButton属性中的On
Click中的Notify上,接着在Method中选择刚写的脚本里的方法就可以了
此方法个人感觉是SendMessage的升级版,比以前更加直观易懂,适用于刚接触Ngui的人学习使用。
缺点:效率略低,不可用于3d物体 如:Cube
Listener(推荐)
Event Listener选择要挂载的按钮,在Unity导航菜单栏中选择Component-&NGUI-&Internal -&Event Listener就可以了
代码写法有2种:
usingUnityE
usingSystem.C
public class EventListerrnTest : MonoBehaviour {
public Transform btn01;
public Transform btn02;
// Use this for initialization
voidStart()
UIEventListener.Get(btn01.gameObject).onClick = (x) =&
Debug.Log(&你通过UIEventListener第一种点击了我!&);
UIEventListener.Get(btn02.gameObject).onClick = _btnC
//实现事件方法
privatevoid_btnClicked(GameObject _go)
Debug.Log(&你通过UIEventListener第二种点击了我!&);
方便统一管理,效率不错。
五.EventDelegate(推荐)
代码更加简单
方便统一管理,可以单独创建一个事件管理脚本,直接操作管理
效率不错,不需要加载拖动其他额外的东西.
using UnityE
using System.C
public classEventUITest : MonoBehaviour {
public UIButton _
private void Awake()
//必须为 UIButton
EventDelegate.Add (this._btn.onClick,this.BtnClicked);
privatevoidBtnClicked()
Debug.Log(&你通过EventDelegate点击了我!&);
代码写好后,拖动绑该代码定到场景任意对象上,同时赋对应button上去就可以了
好啦,ngui五种点击事件处理方式总结到此结束,至于怎么用,那么大家自己取舍咯
若有不足,欢迎指正
=====================分割线================
另附加: 解决ngui在3d场景中 点透的情况
大家做游戏可能遇到 点击地面玩家行走,可是点击界面按钮的时候,事件触发不了,或者同时执行了玩家点地行走事件,
这些都属于点透的情况。
目前据自己经验有2种解决方案
1.在ngui事件代码中做一个判断
viod OnClick()
if(UICamera.hoveredObject != null)
代表的意思是如果鼠标下面有NGUI物体就执行
2.通过射线来检测
privateRaycastHit _hit=newRaycastHit();.
if(UICamera.Raycast (Input.mousePosition, out_hit) == false)
代表的意思是判断在UI界面层操作.
本文已收录于以下专栏:
相关文章推荐
之前在写界面的时候只需要在一个界面播放一个特效或者动画,实现起来并不复杂,但是当策划提的需求需要再增加好几个特效和动画的时候,播放顺序就成了问题,数量少的时候还可以使用定时器,但是数量一,多,定时器就...
以下内容是Unity3D 可重载虚函数总结(事件,回调函数,消息处理)
  重载虚函数
  Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接...
这次的内容有点类似设计模式里的观察者模式。但是和常规意义上的观察者模式也不是完全一致,所以各位就不要咬文嚼字啦!咦?设计模式?!不懂!没关系,说不定你以前就用过。
我们来想象一个场景。...
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境...
泛型是什么?
这是摘自百度百科中对泛型的介绍:
泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会...
List类是  ArrayList 类的泛型等效类。 该类使用大小可按需动态增加的数组实现  IList 泛型接口。 
泛型的好处: 它为使用 c#语言编写面向对象程序增加了极大的效力和灵活性。不会...
写游戏代码,往往最终需要代码为连续的事件.结果会像这样:
[它可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行。]
[csharp] view
plaincopypri...
【unity 代码升华篇】委托进阶、回调函数(三) ...
/thread-.html
(出处: -游戏开发者社区【游戏蛮牛】...
unity射线碰撞检测+LayerMask的使用
/thread-.html
(出处: -游戏开发者社区【游戏蛮牛】unity...
最近刚刚通关《耻辱2》,在有一关的时候,竟然送给我了一个能够穿越时空的“神器”,有了这货,就可以一下子传送到过去或者回到现在。在使用这个道具的时候,会有一个屏幕扭曲的穿越的效果,感觉效果不错...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)sponsored links
unity3d中的ngui的一些笔记
一、 NGUI的直接用法
1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加。(注:用Component添加无效)。
2. Attach an Anchor:表示为该物体添加了UIAnchor脚本,作用是避免像素偏移的问题
3. Attach UIStretch:表示为该物体添加了UIStretch脚本,提供缩放功能
4. Make Pixel Perfect:表示自动为你调整Transform的尺寸
5. Create a Panel:表示创建一个面,相当于一个容器,里面的Button,Label,CheckBox控件全部包含在Panel里面
6. Create a Widget:表示创建一个窗口小部件,比如Button,Label,Sprite等
7. Create a New UI:表示创建一个新的UI界面
8. Font Maker:创建字体
9. Atlas Maker:创建图集
二、关于组件(Component)& NGUI & Examples下的作用
1.PanWithMouse,表示你赋予的该物体会根据鼠标的变换而移动(漂浮的感觉)
2.LookAtTarget,表示该物体朝向你的目标物体(Target)
3.LoadLevelOnClick,表示点击按钮后加载到另外一个场景,在LevelName写上你所要加载的场景名即可
4.Spin,旋转
5.SpinWithMouse,跟着鼠标旋转
6.TypewriterEffect,作用于标签,打字风格
7.Chat Input,将输入框里面的内容提交到文本框里面去
三、关于组件(Component)& NGUI & Interaction下的作用
A:UIButton:鼠标放到按钮上,改变目标物体的颜色
B:UIButtonScale:鼠标放到按钮上,目标物体变大或缩小,在Hover下调节x,y,z的比例
C:UIButtonOffset:鼠标放到按钮上,目标物体挪动位置
D:UIButtonSound:鼠标点击按钮,发出声音
E:UIButtonActivate:鼠标点击按钮后,目标物体由禁用状态到启用状态(触发该物体)
F:UIButtonColor:鼠标移动至按钮后,目标物体变颜色
G:UIButtonRotation:鼠标移动至按钮后,目标物体旋转一定的度数,在Hover下调节x,y,z旋转的度数
H:UIButtonTween:鼠标点击了按钮后,目标物体产生变换,必须给目标物体添加Tween组件里面的变换(例:transform变换,position变换,Alpha变换等等),并在开始enable目标物体的变换,因为此变换是在点击鼠标后才产生,要不然就会在开始运行游戏的时候,它就产生变换了
I:UIButtonPlayAnimation:鼠标点击按钮后,目标动画播放(必须为目标物体添加Animation)
J:UIButton Message:传递消息,写一个公共函数,告诉你所要传递消息的内容,将此脚本放到你的目标物体上,然后写上你所要传递消息的函数名字
2.CheckBox:
A:UICheckBox:用于多选框的选择与取消
B:UICheckBoxControlledObject:如果取消这个多选框的选择,那么目标物体以及所有子物体全部被禁用
C:UICheckBoxControlledComponent:若添加此脚本到CheckBox中,如果选择了该多选按钮,那么此脚本的Target将被显示,如果没有选择该多选按钮,那么此脚本的Target将被隐藏
A:UIDragCamera:为某个物体添加该组件,然后为Camera添加UIDraggableCamera组件,表示该摄像机允许被拖拽,然后将此摄像机放到UIDragCamera的目标摄像机下,拖拽该物体,摄像机的位置就会改变
B:UIDraggableCamera:表示该摄像机是允许被拖拽的
C:UIDraggablePanel:表示该面(容器)是允许被拖拽的
D:UIDragObject:拖动该物体,被允许拖拽的物体会被拖拽,在此被允许拖动的物体必须放到目标物体之下
E:UIDragPanelContents:表示该面的所有组件也是允许被拖拽的
A:UIForward Events:表示从对象到另一个转发事件(还需要详细了解)
B:UIGrid:表示为该物体添加网格,在该物体下可以包含许多的Item,在Arrangemwnt中可以选择竖直或者水平排列,Cell Width和Cell Height代表每个单元格的宽度和高度
C:UICenterOnChild:常用于拖拽事件中,给Panel添加UIDraggablePanel脚本,然后给你想要拖拽的物体添加UIDragObject或者是UIDragPanelContents,然后给网格根目录添加UICenterOnChild,不管如何拖动容器里面的物体,网格始终保持水平或垂直居中状态
D:UIInputValidator:用于输入框中(Input),给输入框添加此脚本后,在Logic有多种选择,None代表没验证,任何字符都可以输入(汉语除外),Integer表示只能输入整数,不能输入英文以及各种特殊字符,Double表示只能输入浮点数,Alphanumeric表示什么英文和数字和特殊字符都可以输入,Username表示可以输入英文、数字,一些特殊字符(小数点除外),Name表示只能输入英文和特殊字符(小数点除外)
E:UIPanelAlpha:可用于任何控件,添加此脚本给物体,在Alpha中可以调节参数,0表示全透明,0-1表示越来越不透明,1以上的数字表示完全不透明
F:UIPopupList:用于下拉列表框(PopupList),通过NGUI创建PopupList控件时,就添加了此脚本,在Options中可以添加下拉列表框的子项
G:UIScrollBar:用于滚动条,Value表示当前滚动条的位置,Size表示一个滚动条的一个单元大小,Alpha表示滚动条的透明度,Direction可以选择滚动条是垂直状态还是水平状态
H:UISlider:用于滑动框,Value表示此滑动框被填充的比例,Direction表示可以选择滑动框是垂直的还是水平的
I:UISoundVolume:用于Slider控件中……
J:UITable:添加表格,Columns表示此表格的列数,Down表示一列里面的控件从上往下排列,Up表示一列里面的控件从下往上排列,Padding表示各个控件的距离
四、关于组件(Component)& NGUI & Tween下的作用
1.Spring Position:表示变换物体的位置,Target是目标位置,物体会从开始的位置,移动到目标位置处
2.Tween Alpha:表示物体的透明度从某一个值到另一个值,From表示开始的值,To表示之后的值
3.Tween Color:表示物体的颜色从某一个值到另一个值,From表示开始的颜色,To表示之后的颜色
4.Tween Position:表示物体的坐标从一个位置到另一个位置,From表示开始的位置,To表示之后的位置
5.Tween Rotation:表示物体从一个角度到另一个角度的变换,From表示开始的角度,To表示之后的角度
6.Tween Scale:表示物体的大小从某一个值到另一个值的变换,From表示开始的大小,To表示之后的大小
7.Tween Transform:表示物体的Transform变换,From表示开始的物体位置,To表示之后的物体位置
五、创建控件(NGUI & Create a Widget)
A:创建标签:Label
B:创建下拉列表框:Popup List
C:创建进度条:Progress Bar
D:创建滑动条:Slider
E:创建输入框:Input
F:创建滚动条:Scroll Bar
G:创建按钮:Button
H:创建多选框:CheckBox
I:创建精灵:精灵也就是从一张大的图集中获取一个小的图片
Sprite:一般的精灵
Sliced Sprite:带有固定边框的精灵
Tiled Sprite:缩放重复填充整个区域的精灵(例如铁丝网)
Filled Sprite:每个都会有一个单独的参数来控制那些可见的,常用于滚动条和进度条
J:创建输入框:Input
六、NGUI事件系统
NGUI事件函数可以写入NGUI控件脚本,或者带有碰撞器的物体(被带有UICamera组件的相机渲染)的脚本。
常用事件:
void OnHover (bool isOver):鼠标悬停或移出时触发。悬停时传入true,移出时传入false。
void OnPress (bool isDown)::鼠标或触摸按下或松开时触发,按下时传入true,松开时传入false。
void OnClick():鼠标或触摸单击(按下并释放)时触发。
void OnDoubleClick () :双击(双击时间间隔小于0.25秒)时触发。
void OnSelect (bool selected):类似单击,区别在于选中一次之后再选中将不再触发OnSelect事件,除非期间选择了其他控件。
void OnDrag (Vector2 delta):鼠标或触摸按下并移动时触发。delta为传入的位移。
void OnInput (string text):只用于输入控件,每次输入完成后触发,text传入本次输入的信息,而非输入控件中的文本信息。
void OnTooltip (bool show):鼠标悬停一段时间或移开时触发,悬停时传入true,移开时传入false。
void OnScroll (float delta):鼠标中键滚动时触发,delta为传入的滚动增量。
七、常用相关变量
UICamera.currentTouchID
UICamera类变量,用于区分鼠标按下的键位,-1为左键,-2为右键,-3为中键
UICamera.lastHit
UICamera类变量,RaycastHit类型。用于获取被触发的物体。
UICamera.lastTouchPosition
UICamera类变量,用于获取鼠标或触摸的位置。
本文出自 “酷酷小乔” 博客,请务必保留此出处http://9
在实际的项目中,经常会使用NGUI来制作UI,Main Camera来表现3D,但是NGUI的Camer的投射是正交视图而非透视,它还添加了一个UICamer的脚本而且它的Tag默认是Untagged 对比一下这两个Camera的异同,刚开始没看清楚NGUI Camera的Clear Flags是Skybox,我调了一会儿,Game视图 ...
Unity3D开发之NGUI点击事件穿透响应处理 日 / 综合 / 共 300字 / 字号 小 中 大 / 评论关闭
在使用NGUI 开发2D项目的时候,发现了一个问题,就是如果点出一个菜单,然后点击菜单上面的按钮的时候就会使得按钮下面的物品也会触发点击事件(如果有的话), 经过查阅相关资料,发现了一个很方便的处理方法:分层处理.就是 ...
有时我们需要在Unity3D中绘制进度条,如:
如果使用4.6版本以下的unity绘制环形的进度条可能需要费点劲.我搜到的大多数方法都是用NGUI插件,但有时只是为了简单的画一个环形UI,使用NGUI反而还增加了学习成本.有一个利用CutOut材质的方法能够利用alpha值,灵活的控制进度条中 ...
之前作Unity3D因为我写的很多事逻辑层,较少接触GUI,现在开始做GUI了.虽然GUI有NGUI,EZGUI这些插件,但是先从最简单的Unity3D中的原生GUI开始熟悉风格,比较符合我的习惯:况且NGUI里面的代码也都是利用原生GUI来开发的,所以熟悉原生GUI再去看NGUI这类高手写的GUI插件应该会更有帮助(学习是有一个学习曲线的,我现在对于GUI ...
原文:http://engineering.socialpoint.es/MVC-pattern-unity3d-ui.html 动机
和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK.另外至关重要的是, 我们想尽快加速迭代的过程.使用MVC模式来进行设计,已经被业界证明了是可以解耦屏幕上的显示,如何控制用户的输入 ...Unity3D NGUI制作的Button放到场景中,按钮从2D变到3D - CSDN博客
Unity3D NGUI制作的Button放到场景中,按钮从2D变到3D
通常我们使用Button都是在UI界面,即NGUI的摄像机下,如果想换到场景中,即不让按钮以UI形式显现,而是和场景中的物体一起随着摄像机移动而缩小,放大。
很简单,把Button从NGUi的摄像机中拖出来,并改变Button所在的层与NGUI照射层不同,或者让主摄像机的Culling Mask照射到Button所在的层都可。
调整Button的大小,旋转,即可。
注意:如果你使用的NGUi自带的UIButtonMessage脚本传值,那么当你的Button不被NGUI的摄像机照射,或不属于同一层时,是无法触发该脚本的。那么你需要令写个脚本,添加OnMouseDown()事件,响应点击事件,再在这里写获取你想触发的函数所在的脚本,例如:GameObject.Find(&触发脚本所在的对象&).GetComponent&你的脚本&.你的方法名(&参数&),这样就行了
本文已收录于以下专栏:
相关文章推荐
1.将下面该段代码赋给摄像机
void Update () {
RaycastHit hit = new RaycastHit();
通过前面十三篇文章的介绍,我的游戏场景基本搭建完成了,我们在玩任何一款手游产品时,都是先上来个logo界面,游戏欢迎界面等,这就意味着我们要做一款游戏需要多个场景,场景之间来回切换实现游戏逻辑,uni...
持久化数据PlayerPrefs其实说白了,就是Android里面的bundle《【Android】多个Activity之间利用bundle传递数值》(点击打开链接),其实说得更直白些,就是一个超级全...
打打广告看看能不能挣到钱,呵呵/search-android%E6%89%8B%E6%9C%BA.html?oid=245860&gsid=5...
最近做的一个项目,是鼠标点击左键在plane上画线,其中,界面上有NGUI的button,点击用来改变线的颜色,显然主要画线脚本绑定在摄像头上面,而button响应事件的脚本绑定在对应的button上...
原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【】 本文链接地址: Unity3D
NGUI动态创建按钮
以动态创建服务器列表为例。
http://blog.csdn.net/littleadr
  由于游戏需要从背包中拖出武器并在场景中相应的位置生成出来,所以研究了一下这个。
  一般来说,在Unity3D开发中如果使...
本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢。
http://blog.csdn.net/lzhq1982/article/details/
博主逛csdn有几年的时间了,但每每都是遇到问题时,来寻找解决方案的情况居多,并未开通过博客,也未发过任何文章,随着自己从网上得到的帮助越来越多,本着回馈与共同进步的想法,遂开通博客,并将自己在日常开...
NGUI讨论群:
以下是经常发现会遇到的问题。
1、设置正确的Camera的Culling Mask;设置正确的UICamera的Event ReceiverMask。这两个要...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 ngui 按钮 没显示出来 的文章

 

随机推荐