1.UICamera,NGUI框架中的event listener。在Update中,捕获输入,判断不同event object和event source,然后“广播”分发执行event handle。分发函数 Norify()。
2.System.Collections.IEnumerator ChangeSelection(),这种selection change,在事件进程中,不会造成最新的selected widget改变时执行事件进程。
3.Raycast(Vector3 inPos)射线检测触摸的位置是否有对象Object。遍历这个相机列表list,UICamera cam = list。buffer[i];
4.FindCameraForLayer(int layer),找到发送处理该layout的objects对应的Camera。
5.CameraList,排序根据depth。
static public BetterList<UICamera> list = new BetterList<UICamera>();
list排序,根据depth,depth小的靠前。最靠前为场景的主UICamera。只有主UICamera会去检测场景中事件,其它不执行检测任务,List[0]。
6.Ray射线必须碰撞Collider,最大深度为rangeDistance,初始值为-1,-1代表发射深度与相机深度一样。
7.MouseOrTouch,事件的结构体,定义了不同平台的事件,记录Camera检测的事件。
8.ProcessTouches()和ProcessMouse()
ProcessTouches()对currentTouch进行赋值。为了在触摸事件发生过程中不去刷新最后一个camera。
if(press) currentTouch.pressedCam = currentCamera;
elseif(currentTouch.pressed != null) currentCamera = currentTouch.pressedCam;
ProcessMouse()中,mMouse[0]记录鼠标信息。mMouse[0]记录当前鼠标信息,mMouse[1]、mMouse[2]记录其他鼠标button。0、1、2因为鼠标的 左键、右键、中键。