void Awake() { //下面使用delegate 的方法触发回调比 SendMessage 效率更高。把下面注释掉就是使用SendMessage触发。 //使用delegate方法,回调方法名不能写成跟SendMessage目标方法名一样,否则点一下回调会触发两次 gameObject.AddComponent <ScreenRaycaster>(); fingerDownDetector = gameObject.AddComponent <FingerDownDetector>(); fingerDownDetector.enabled = false; fingerDownDetector.OnFingerDown += FingerDownEventHandler; fingerHoverDetector = gameObject.AddComponent <FingerHoverDetector>(); fingerHoverDetector.enabled = false; fingerHoverDetector.OnFingerHover += FingerHoverEventHandler; fingerMotionDetector = gameObject.AddComponent <FingerMotionDetector>(); fingerMotionDetector.enabled = false; fingerMotionDetector.OnFingerMove += FingerMoveEventHandler; fingerMotionDetector.OnFingerStationary += FingerStationaryEventHandler; fingerUpDetector = gameObject.AddComponent <FingerUpDetector>(); fingerUpDetector.enabled = false; fingerUpDetector.OnFingerUp += FingerUpEventHandler; dragRecognizer = gameObject.AddComponent <DragRecognizer>(); dragRecognizer.enabled = false; //只有在固定finger数的情况下才会触发。 dragRecognizer.IsExclusive = true; dragRecognizer.MoveTolerance = 0; dragRecognizer.OnGesture += FirstFingerDragEventHandler; longPressRecognizer = gameObject.AddComponent <LongPressRecognizer>(); longPressRecognizer.enabled = false; longPressRecognizer.OnGesture += LongPressEventHandler; tapRecognizer = gameObject.AddComponent <TapRecognizer>(); tapRecognizer.enabled = false; tapRecognizer.IsExclusive = true; tapRecognizer.OnGesture += TapEventHandler; doubleTapRecognizer = gameObject.AddComponent <TapRecognizer>(); doubleTapRecognizer.enabled = false; doubleTapRecognizer.RequiredTaps = 2; doubleTapRecognizer.OnGesture += DoubleTapEventHandler; swipeRecognizer = gameObject.AddComponent <SwipeRecognizer>(); swipeRecognizer.enabled = false; swipeRecognizer.OnGesture += SwipeEventHandler; pinchRecognizer = gameObject.AddComponent <PinchRecognizer>(); pinchRecognizer.enabled = false; pinchRecognizer.MinDistance = 0; pinchRecognizer.MinDOT = 0; pinchRecognizer.OnGesture += PinchEventHandler; twistRecognizer = gameObject.AddComponent <TwistRecognizer>(); twistRecognizer.enabled = false; twistRecognizer.OnGesture += TwistEventHandler; }
void Start() { if (!MessageTarget) { MessageTarget = this.gameObject; } screenRaycaster = GetComponent <ScreenRaycaster>(); if (!screenRaycaster) { screenRaycaster = gameObject.AddComponent <ScreenRaycaster>(); } // Create the FG instance if not already available if (!FingerGestures.Instance) { gameObject.AddComponent <FingerGestures>(); } GameObject fingerEventsNode = CreateChildNode("Finger Event Detectors"); { FingerDown = AddFingerEventDetector <FingerDownDetector>(fingerEventsNode); FingerUp = AddFingerEventDetector <FingerUpDetector>(fingerEventsNode); FingerMotion = AddFingerEventDetector <FingerMotionDetector>(fingerEventsNode); FingerHover = AddFingerEventDetector <FingerHoverDetector>(fingerEventsNode); } GameObject singleFingerGestureNode = CreateChildNode("Single Finger Gestures"); { Drag = AddSingleFingerGesture <DragRecognizer>(singleFingerGestureNode); Tap = AddSingleFingerGesture <TapRecognizer>(singleFingerGestureNode); Swipe = AddSingleFingerGesture <SwipeRecognizer>(singleFingerGestureNode); LongPress = AddSingleFingerGesture <LongPressRecognizer>(singleFingerGestureNode); DoubleTap = AddSingleFingerGesture <TapRecognizer>(singleFingerGestureNode); DoubleTap.RequiredTaps = 2; DoubleTap.EventMessageName = "OnDoubleTap"; } GameObject twoFingerGestures = CreateChildNode("Two-Finger Gestures"); { Pinch = AddTwoFingerGesture <PinchRecognizer>(twoFingerGestures); Twist = AddTwoFingerGesture <TwistRecognizer>(twoFingerGestures); TwoFingerDrag = AddTwoFingerGesture <DragRecognizer>(twoFingerGestures, "OnTwoFingerDrag"); TwoFingerTap = AddTwoFingerGesture <TapRecognizer>(twoFingerGestures, "OnTwoFingerTap"); TwoFingerSwipe = AddTwoFingerGesture <SwipeRecognizer>(twoFingerGestures, "OnTwoFingerSwipe"); TwoFingerLongPress = AddTwoFingerGesture <LongPressRecognizer>(twoFingerGestures, "OnTwoFingerLongPress"); } // we're done, remove component (but not game object) // Destroy( this ); }
protected override void OnRegister() { base.OnRegister(); enableGestureController.AddListener(EnableGestureSignalEvent); mTapRecognizer = gameObject.AddComponent <TapRecognizer> (); mTapRecognizer.UseSendMessage = false; mTapRecognizer.IsExclusive = true; mSwipeRecognizer = gameObject.AddComponent <SwipeRecognizer> (); mSwipeRecognizer.UseSendMessage = false; mSwipeRecognizer.IsExclusive = true; mDragRecognizer = gameObject.AddComponent <DragRecognizer> (); mDragRecognizer.UseSendMessage = false; mDragRecognizer.IsExclusive = true; mTwoFingerDragRecognizer = gameObject.AddComponent <DragRecognizer> (); mTwoFingerDragRecognizer.RequiredFingerCount = 2; mTwoFingerDragRecognizer.UseSendMessage = false; mTwoFingerDragRecognizer.IsExclusive = true; mPinchRecognizer = gameObject.AddComponent <PinchRecognizer> (); mPinchRecognizer.UseSendMessage = false; mPinchRecognizer.IsExclusive = true; mTwistRecognizer = gameObject.AddComponent <TwistRecognizer> (); mTwistRecognizer.UseSendMessage = false; mTwistRecognizer.IsExclusive = true; // mPressRecognizer = gameObject.AddComponent<LongPressRecognizer> (); // mPressRecognizer.UseSendMessage = false; // mPressRecognizer.IsExclusive = true; mFingeDown = gameObject.AddComponent <FingerDownDetector> (); mFingeUp = gameObject.AddComponent <FingerUpDetector> (); mTapRecognizer.OnGesture += OnSceneTap; mDragRecognizer.OnGesture += OnSceneDrag; mPinchRecognizer.OnGesture += OnScenePinch; mSwipeRecognizer.OnGesture += OnSceneSwipe; mTwoFingerDragRecognizer.OnGesture += OnSceneTwoFingerDrag; mTwistRecognizer.OnGesture += OnSceneTwist; mFingeDown.OnFingerDown += OnSceneDown; mFingeUp.OnFingerUp += OnSceneUp; }