Esempio n. 1
0
        public bool CanClick(String buttonName)
        {
            var pointerDataBacup = CurrentPointerData;

            recordExecuteEvent.SkipSendTouch = true;
            var selectedGameObjectBacup = EventSystem.current.currentSelectedGameObject;

            var founds = FindGameObject(buttonName).Where(gOb => gOb.ExitHander <Selectable>()).ToArray();

            if (founds.Length > 1)
            {
                Debug.LogError(founds.Length + " Button found with name " + buttonName);
            }
            else if (founds.Length == 0)
            {
                return(false);
            }

            var target = founds[0];

            var rectTransform = target.transform as RectTransform;

            Vector3 min = rectTransform.TransformPoint((rectTransform.rect.min + rectTransform.rect.max) / 2);

            var min2D       = RectTransformUtility.WorldToScreenPoint(Camera.main, min);
            var inputModule = Object.FindObjectOfType <StandaloneInputModule>();

            CurrentPointerData = new PointerData()
            {
                position = min2D
            };
            CurrentPointerData.TouchDown();
            CurrentPointerData.TouchUp();

            didProcessThisFrame = false;
            inputModule.Process();

            CurrentPointerData.RevertTouchDown();
            CurrentPointerData.RevertTouchUp();

            var clickGameObject = CurrentPointerData.SelectGameObject;

            CurrentPointerData = pointerDataBacup;
            recordExecuteEvent.SkipSendTouch = false;
            EventSystem.current.SetSelectedGameObject(selectedGameObjectBacup);

            return(clickGameObject == target);
        }
Esempio n. 2
0
        private IEnumerator DelayRevertTouchDown()
        {
            yield return(null);

            CurrentPointerData.RevertTouchDown();
        }