原理:摇杆使用过程,首先需要Touch记录手势,存到Touch fingers数组中,然后Update里面检测fingers[0](遥感只考虑第一个手势)是否为null来进行后续事件触发与回调.
以下是Touch中手势判断代码.当有手势对象时,会触发Touch事件,在Touch事件中检测遥感事件.
for (i = 0; i < 10; i++)
{
if (fingers[i] != null)
{
OneFinger(i);
}
}
遇到的问题:
1.当跳转界面时,NGUI跳转界面的加载,遥感手势信息会无法清除.出现遥感Touch和Joystick无法触发抬起事件.并且手势信息没有清除,下一次点击手势无法记录.跳转完界面后,第一次点击遥感会无效.
2.当遥感与NGUI使用同一层时,会出现NGUI界面的点击事件,会影响遥感的抬起事件.优先触发NGUI事件,遥感事件会中断.无法在松手时,触发抬起事件.
解决方案.1.强制清除手势信息方法:在EasyTouch脚本中,最后添加方法,用来强制清除手势信息,以达到当手势信息无法清除时,可以调用清除.调用时通过Touch对象调用.
以下是清除手势代码.
public void ClearFingerInfo()
{
this.fingers[0] = null;
}
2.使用遥感时,要单独分层.使用方法见下:使用栏第一条.
使用
1.EasyTouch插件使用,要记录主摄像机和NGUI摄像机.
特别注意:遥感使用要单独分层.并在EasyTouch属性栏 NGUILayers选择新层.
2.EasyJoystick的触发和抬起事件.可以+=或者-=注册回调和移除回调.
EasyJoystick.On_JoystickTouchStart += (方法); //点击事件
EasyJoystick.On_JoystickTouchUp += (方法); //抬起事件
3.Easyjoystick里面控制显示遥感图片的一些属性
public bool showZone = true; //底图是否显示
public bool showTouch = true; //移动的游标图片是否显示
public bool showDeadZone = true; //游标外虚线圈是否显示
public Color areaColor = Color.white; //底图颜色
public Texture areaTexture; //底图图片
public Texture touchTexture; //游标图片
public Color touchColor = Color.white; //游标颜色
public Texture deadTexture; //虚线圈图片