怎样正确做 Web 应用的javaweb应用压力测试试??

如何让NGUI按钮失效不能按
如提请各位大大告知
要评论请先&或者&
button.isenable = false
谢谢大大告知Ngui 五种点击事件实现方式及在3d场景中点透的情况
- 坚信移动技术可以改变我们的生活方式 - ITeye技术网站
博客分类:
gui作为界面插件之一中,无疑是最好用,使用最多的了从自学unity到现在界面一直使用它由于它的持续更新,我在此不得不说,确实很为开发者作想,为什么这么讲呢?大概在去年吧
当时用的那个版本已经不记得了,反正就是有个需求,要实现“无限循环”拖动,使用过以前ngui的人就知道当时是没有这个功能的,后来被自己弄出来没几天,就发现新版本中就自带了这样的东西,也就是如今ngui列子中的 Endless Scroll Views,当时,记得好像还心里暗骂了“坑爹”。好啦,可能稍微有些偏题了,现在进入正题:ngui点击事件我在此分为5种不同写法来总结一.OnClickOnClick作为传统的单击事件,其实真心好用,直接
[C#] 纯文本查看 复制代码
using UnityE
using System.C
public class onclicktest : MonoBehaviour {
public void OnClick()
Debug.Log("你通过OnClick点击了我!");
不管你是界面按钮 还是物体对象(需要加BoxCollider)都可用可是,太麻烦,不好管理。二.SendMessage1.SendMessage是属于Ngui老版本的一种事件实现方式了,在此就简单说下了&ignore_js_op style="word-wrap: break- color: rgb(105, 105, 105); font-family: 'microsoft yahei'; background-color: rgb(234, 234, 234);"&
Target:接收按钮消息的游戏对象。
Function Name:接收按钮消息的方法,拥有这个方法的脚本必须绑定在上面Target对象身上。
Trigger:触发的事件。
Include Children :是否让该对象的所有子对象也发送这个点击事件。
缺点:不直观,太多拖动操作,效率略低
三.通过UIButton属性面板附加事件
首先,在代码中写你要做的事情,
[C#] 纯文本查看 复制代码
using UnityE
using System.C
public class ClickTest : MonoBehaviour
//通过UIButton属性面板附加事件,该事件方法必须加public修饰
public void btn_Click()
Debug.Log("你通过UIButton属性面板附加事件点击了我!");
然后,拖动绑该代码定到场景任意对象上,
最后,选择你要点击的按钮,把刚才绑定代码的对象拖到,UIButton属性中的On Click中的Notify上,接着在Method中选择刚写的脚本里的方法就可以了
此方法个人感觉是SendMessage的升级版,比以前更加直观易懂,适用于刚接触Ngui的人学习使用。
缺点:效率略低,不可用于3d物体 如:Cube
四..Event Listener(推荐)
Event Listener选择要挂载的按钮,在Unity导航菜单栏中选择Component-&NGUI-&Internal -&Event Listener就可以了
代码写法有2种:
本帖隐藏的内容
[C#] 纯文本查看 复制代码
using UnityE
using System.C
public class EventListerrnTest : MonoBehaviour {
public Transform btn01;
public Transform btn02;
// Use this for initialization
void Start()
UIEventListener.Get(btn01.gameObject).onClick = (x) =&
Debug.Log("你通过UIEventListener第一种点击了我!");
UIEventListener.Get(btn02.gameObject).onClick = _btnC
//实现事件方法
private void _btnClicked(GameObject _go)
Debug.Log("你通过UIEventListener第二种点击了我!");
方便统一管理,效率不错。
五.EventDelegate(推荐)
代码更加简单
方便统一管理,可以单独创建一个事件管理脚本,直接操作管理
效率不错,不需要加载拖动其他额外的东西.
本帖隐藏的内容
[C#] 纯文本查看 复制代码
using UnityE
using System.C
public class EventUITest : MonoBehaviour {
public UIButton _
private void Awake()
//必须为 UIButton
EventDelegate.Add (this._btn.onClick, this.BtnClicked);
private void BtnClicked()
Debug.Log("你通过EventDelegate点击了我!");
代码写好后,拖动绑该代码定到场景任意对象上,同时赋对应button上去就可以了
好啦,ngui五种点击事件处理方式总结到此结束,至于怎么用,那么大家自己取舍咯
若有不足,欢迎指正
=====================分割线================
另附加: 解决ngui在3d场景中 点透的情况
大家做游戏可能遇到 点击地面玩家行走,可是点击界面按钮的时候,事件触发不了,或者同时执行了玩家点地行走事件,
这些都属于点透的情况。
目前据自己经验有2种解决方案
本帖隐藏的内容
1.在ngui事件代码中做一个判断如:
[C#] 纯文本查看 复制代码
viod OnClick()
if(UICamera.hoveredObject != null)
代表的意思是如果鼠标下面有NGUI物体就执行 2.通过射线来检测
[C#] 纯文本查看 复制代码
private RaycastHit _hit=new RaycastHit();.
if (UICamera.Raycast (Input.mousePosition, out _hit) == false)
代表的意思是判断在UI界面层操作.
希望对大家有用 同时有更好方法欢迎赐教
/thread-.html
浏览: 217227 次
来自: 北京
大神,,请问,(isChecked)是什么啊?是bboolea ...
zhang 写道大家不要总阅读。欢迎来评论一 ...
写道我在设置如何格式化的时候 总是保存不了
我在设置如何格式化的时候 总是保存不了 不知道楼主有遇到过这种 ...请使用支持脚本的浏览器!
该日志尚未公开,你暂时不能查看。博主可在此
不如去逛逛吧。
网易公司版权所有&&&EasyTouch和NGUI的使用心得 - 凤凰火舞 - 博客园
posts - 10, comments - 8, trackbacks - 0, articles - 0
  今天来写一写Unity3D中两个比较常用插件:EasyTouch和NGUI的学习心得。我用的版本分别是EasyTouch 3.1.1和NGUI 3.6.0,下面也是对这两个版本的学习心得。
  1. EasyTouch
  EasyTouch是为触摸屏准备的插件,提供了触摸屏的虚拟按键,大致包括3部分:摇杆、按钮和触摸响应。
  1.1 EasyTouch摇杆
  这个摇杆就是通过手指在摇杆区域的滑动控制你想控制的物体上下左右移动的,当手指触摸到摇杆上面进行移动时,可以通过MovingJoystick类的变量获取移动灵敏度。当然,使用教程网上也有很多,这里不详细讲了,只是简单进行主要流程说明。在使用时,首先要添加一个事件相应函数:EasyJoystick.On_JoystickMove += OnJoystickM 其中OnJoystickMove是函数名,需要自己实现这个函数,这个函数的原型需要是:&void OnJoystickMove(MovingJoystick move)&,其中接收一个MovingJoystick的变量,可以通过move.joystickAxis.x和move.joystickAxis.y获取左右和前后的移动距离,这里的x对应Unity3D中的x轴(左右移动方向),y对象Unity3D中的z轴(前进后退方向),这样就可以控制物体移动了。通过摇杆控制物体当然还有其他方法,可以不写代码,直接将需要控制移动的物体通过Inspector面板赋值给它也可以,我没有用过,这里就不讲了。
  1.2 EasyTouch按钮
  EasyTouch也贴心的提供了按钮,可以通过下图的操作直接创建一个按钮,并指定相应事件,和按钮的Texture。
  EasyTouch提供了Normal Texture和Active Texture两个接口,分别是平时的按钮纹理和按钮被按下时的纹理。
  EasyTouch按钮添加事件也很方便,在Inspector面板中找到Receiver Object,这里把你要接受消息的对象拖过来,然后在Down method name里面写上函数名(不要加括号),这样当你按下按钮时,它就会去在你指定的接收对象的脚本中去寻找这个函数,然后执行。
  但是EasyTouch按钮有个缺点就是按钮的外观是通过Texture指定的,如果你想在上面添加文字,或者想在游戏中变换其上面的文字只能通过重新加载新的纹理实现,加载新纹理可以使用Resource.Load函数。可以使用如下代码,注意Resource.Load中的第一个参数是纹理名称,纹理放在Assets下的Resources目录下面这个函数就可以找到。按钮上面加文字可以使用OnGUI,NGUI或者自己PS一个按钮的Texture,在里面加上文字。
EasyButtonName.ActiveTexture = Resources.Load("ActiveTexturePath", typeof(Texture2D)) as Texture2D;
  1.3 EasyTouch
  EasyTouch最主要的功能还是提供了手指在屏幕上的触摸行为,包括按下、双击、长按、拖拽等。我用到了滑动,也就是手指在屏幕上滑动控制摄像机的旋转。
  触发滑动操作的相应函数需要添加EasyTouch.On_SwipeStart、EasyTouch.On_Swipe和EasyTouch.On_SwipeEnd方法,分别表示滑动开始、滑动中、滑动结束的方法,当然如果不需要滑动开始和结束,也可以不添加。这些方法的原型是&void OnSwipe(Gesture gesture)&,滑动的多少可以通过gesture.deltaPosition.x和gesture.deltaPosition.x获取。
  最后还要说一下,在这个版本的EasyTouch中有一个bug:当你一只手使用摇杆,另一只手在屏幕滑来滑去控制摄像机视角时,会引发这个bug。该bug在手机上的表现就是:当你放开控制摇杆的手时,发现摇杆并没有复位,而是卡在摇杆区域的边缘,控制的对象还在运动。在电脑端这个问题比较难重现,是因为电脑端用鼠标点,只有一个鼠标,一般不会触发这个bug,因此这个bug在手机上发生时就表现的很诡异,不知道是什么原因。在电脑端重现的方法:用鼠标移动摇杆,此时鼠标按住不要动,然后按下ctrl键(如下图可以设置),屏幕会出现一个黄色的圆点,然后仍然按住鼠标不动,移动鼠标,会发现Unity3D的Console窗口有红字提示错误:NullReferenceException: Object reference not set to an instance of an object。
  通过搜索,找到了解决方法,在这个网站上有人提出了这个问题,在下面EasyTouch制作团队进行了回复,说这是一个bug,并给出了临时解决方案,在Easytouch脚本中做如下修改:
Replace line 1193 :
1 gesture.isHoverReservedArea = IsTouchReservedArea( fingers[twoFinger0].fingerIndex) || IsTouchReservedArea( fingers[twoFinger1].fingerIndex);
1 if (fingers[twoFinger0] != null){
gesture.isHoverReservedArea = IsTouchReservedArea( fingers[twoFinger0].fingerIndex);
4 if (fingers[twoFinger1] != null){
gesture.isHoverReservedArea = gesture.isHoverReservedArea || IsTouchReservedArea( fingers[twoFinger1].fingerIndex);
And replace line :
1 gesture.pickCamera = fingers[twoFinger0].pickedC
2 gesture.isGuiCamera = fingers[twoFinger0].isGuiC
1 if (fingers[twoFinger0] != null){
gesture.pickCamera = fingers[twoFinger0].pickedC
gesture.isGuiCamera = fingers[twoFinger0].isGuiC
5 else if (fingers[twoFinger1] != null){
gesture.pickCamera = fingers[twoFinger1].pickedC
gesture.isGuiCamera = fingers[twoFinger1].isGuiC
  大家也可以点击上面的网址,直接去看他的回复。EasyTouch就先写到这里,下面简单写一下NGUI的使用心得。
  2. NGUI
  NGUI是制作UI用的,为什么不用Unity3D自带的OnGUI呢?网上说OnGUI会在一帧内调用好多次,导致效率非常低,尤其是到移动平台更是明显,自己也没做过很复杂的UI,对这点感受还不深,但是为了适应移动平台,还是学了NGUI。
  对于新版NGUI来说,整个界面、操作以及使用方法变化较大,很多网上的教程已经跟不上版本的变化了,这里只能自己慢慢摸索,现在学的也不是很深,大概说一下制作NGUI按钮的一个流程吧。
  创建一个NGUI界面,首先可以通过下图所示按钮创建一个2D或3D界面。
  点击2D UI或者3D UI后,在Hierarchy中会出现UI Root或者UI Root(3D),这里以2D为例吧,3D比较复杂。在UI Root里面自带了一个Camera是用来显示UI的,我们可以通过设置这个Camera的Culling Mask控制它只显示我们给UI Root以及下面的子对象指定的Layer,然后让Main Camera不显示这些Layer,这样可以防止在游戏中可能会看到多个UI的情况。然后呢,在UI Root下面新建一个Panel,把一组按钮放在这个Panel上面,方便统一管理,如果不想新建Panel也可以。接着创建一个Sprite,在这个对象上添加NGUI自带的Button脚本(用于设置响应,显示为UIButton)和Box Collider(用于响应点击),设置按钮的响应函数的一个方法是在这里拖入一个对象,拖入一个对象后,在Notify下面会显示Meshod,可以再这里选择在该对象的脚本中定义好的一个public方法作为单击相应函数,注意一定是public方法,否则Method里面找不到。
  关于按钮上的文字,可以通过创建一个Label实现,这样一个按钮就创建好了。当然,按钮还可以有各种动画,这些可以参考NGUI自带的Example,里面做了很多例子。
  还有关于锚点的,老版本的NGUI需要将按钮什么的对象放到一个Anchor下面,在新版本中不用了,在很多NGUI的脚本中都已经集成了Anchors,就像下面这样,可以通过这种方式去设置位置。
  今天就写这么多吧,关于NGUI也还学的不深,写的比较简单。本文如果有不正确的地方,欢迎指正。

我要回帖

更多关于 如何做压力测试 的文章

 

随机推荐