コード例 #1
0
    protected System.Collections.IEnumerator OnClickUpDestroyCoroutine(UsableContainerField fieldRef, Vector2 targetPos, float lagSeconds)
    {
        yield return(new WaitForSeconds(lagSeconds));

        fieldRef.GetComponent <RectTransform>().position = targetPos;
        fieldRef.transform.SetParent(_tempTransform, true);
        Destroy(this);
        yield return(null);
    }
コード例 #2
0
    protected void OnClickUpInEquipment(PointerEventData eventData)
    {
        if (!_actionsLocked)
        {
            FloatingParticleManager.Instance.Hide();

            bool actionDone = false;
            // check for mouse collisions with scene objects
            RaycastHit2D[] hits           = InputManager.Instance.GetRaycastHitsUnderCursor();
            int            objectsLayerID = LayerMask.NameToLayer("Objects");
            int            hl             = hits.Length;
            if (hl == 0)
            {
                actionDone = true;
            }

            for (int i = 0; i < hl; ++i)
            {
                if (!actionDone && hits[i].collider != null && hits[i].collider.gameObject.layer == objectsLayerID)
                {
                    actionDone = PerformActionOnClick(hits[i].collider.gameObject);
                }
            }


            if (!actionDone)
            {
                // check for collisions with equipment elements
                PointerEventData pData = new PointerEventData(EventSystem.current);
                pData.position = InputManager.Instance.CursorCurrentPosition;
                List <RaycastResult> results = new List <RaycastResult>();
                EventSystem.current.RaycastAll(pData, results);

                int length = results.Count;
                for (int i = 0; i < length; ++i)
                {
                    if (results[i].gameObject.layer == objectsLayerID && results[i].gameObject != _container.UsableField.gameObject)
                    {
                        UsableContainerField field = results[i].gameObject.GetComponent <UsableContainerField>();
                        if (field != null && !field.Container.IsFree)
                        {
                            actionDone = PerformActionOnClick(field.Container.AssociatedObject.gameObject);
                        }
                    }
                }
            }

            if (!actionDone)
            {
                PerformActionOnClick(null);
            }

            _actionsLocked = true;

            if (actionDone && DestroyOnUse)
            {
                EquipmentManager.Instance.RemoveObjectFromPool(this, 0.6f);
                StartCoroutine(OnClickUpDestroyCoroutine(_container.UsableField, _startSlotPosition, 1.2f));
            }
            else
            {
                StartCoroutine(OnClickUpReturnToSlotCoroutine(_container.UsableField.GetComponent <RectTransform>().position, _startSlotPosition, 0.5f));
            }
        }
    }