Пример #1
0
 void CancelButton()
 {
     if (lastButton != null)
     {
         lastButton.Canceled();
         lastButton = null;
     }
 }
Пример #2
0
    void ComputeButtonAnchor(ButtonAnchor anchor)
    {
        if (normalTexture != null)
        {
            Vector2 buttonSize     = new Vector2(normalTexture.width * scale.x, normalTexture.height * scale.y);
            Vector2 anchorPosition = Vector2.zero;

            // Anchor position
            switch (anchor)
            {
            case ButtonAnchor.UpperLeft:
                anchorPosition = new Vector2(0, 0);
                break;

            case ButtonAnchor.UpperCenter:
                anchorPosition = new Vector2(VirtualScreen.width / 2 - buttonSize.x / 2, offset.y);
                break;

            case ButtonAnchor.UpperRight:
                anchorPosition = new Vector2(VirtualScreen.width - buttonSize.x, 0);
                break;

            case ButtonAnchor.MiddleLeft:
                anchorPosition = new Vector2(0, VirtualScreen.height / 2 - buttonSize.y / 2);
                break;

            case ButtonAnchor.MiddleCenter:
                anchorPosition = new Vector2(VirtualScreen.width / 2 - buttonSize.x / 2, VirtualScreen.height / 2 - buttonSize.y / 2);
                break;

            case ButtonAnchor.MiddleRight:
                anchorPosition = new Vector2(VirtualScreen.width - buttonSize.x, VirtualScreen.height / 2 - buttonSize.y / 2);
                break;

            case ButtonAnchor.LowerLeft:
                anchorPosition = new Vector2(0, VirtualScreen.height - buttonSize.y);
                break;

            case ButtonAnchor.LowerCenter:
                anchorPosition = new Vector2(VirtualScreen.width / 2 - buttonSize.x / 2, VirtualScreen.height - buttonSize.y);
                break;

            case ButtonAnchor.LowerRight:
                anchorPosition = new Vector2(VirtualScreen.width - buttonSize.x, VirtualScreen.height - buttonSize.y);
                break;
            }

            //button rect
            buttonRect = new Rect(anchorPosition.x + offset.x, anchorPosition.y + offset.y, buttonSize.x, buttonSize.y);
        }
    }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        if ((Input.GetMouseButton(0) || Input.GetMouseButtonUp(0)))
        {
            Ray          ray  = GetComponent <Camera>().ScreenPointToRay(Input.mousePosition);
            RaycastHit[] hits = Physics.RaycastAll(ray);

            bool touchingButton = false;
            for (int i = 0; i < hits.Length; i++)
            {
                ButtonAnchor button = hits[i].transform.gameObject.GetComponent <ButtonAnchor>();

                if ((lastButton != null && lastButton != button) || !canClick)
                {
                    continue;
                }
                if (button != null && button.isActive)
                {
                    touchingButton = true;
                    if (Input.GetMouseButtonDown(0))
                    {
                        button.TouchDown();
                        lastButton = button;
                    }
                    else if (Input.GetMouseButtonUp(0))
                    {
                        button.Click();
                        canClick   = true;
                        lastButton = null;
                    }
                    else
                    {
                        button.ButtonHeld();
                    }
                }
            }
            if (!touchingButton)
            {
                canClick = false;
                CancelButton();
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            CancelButton();
            canClick = true;
        }
    }
Пример #4
0
    private void ComputeButtonAnchor(ButtonAnchor anchor)
    {
        if (normalTexture != null)
        {
            Vector2 vector  = new Vector2((float)normalTexture.width * scale.x, (float)normalTexture.height * scale.y);
            Vector2 vector2 = Vector2.zero;
            switch (anchor)
            {
            case ButtonAnchor.UpperLeft:
                vector2 = new Vector2(0f, 0f);
                break;

            case ButtonAnchor.UpperCenter:
                vector2 = new Vector2(VirtualScreen.width / 2f - vector.x / 2f, offset.y);
                break;

            case ButtonAnchor.UpperRight:
                vector2 = new Vector2(VirtualScreen.width - vector.x, 0f);
                break;

            case ButtonAnchor.MiddleLeft:
                vector2 = new Vector2(0f, VirtualScreen.height / 2f - vector.y / 2f);
                break;

            case ButtonAnchor.MiddleCenter:
                vector2 = new Vector2(VirtualScreen.width / 2f - vector.x / 2f, VirtualScreen.height / 2f - vector.y / 2f);
                break;

            case ButtonAnchor.MiddleRight:
                vector2 = new Vector2(VirtualScreen.width - vector.x, VirtualScreen.height / 2f - vector.y / 2f);
                break;

            case ButtonAnchor.LowerLeft:
                vector2 = new Vector2(0f, VirtualScreen.height - vector.y);
                break;

            case ButtonAnchor.LowerCenter:
                vector2 = new Vector2(VirtualScreen.width / 2f - vector.x / 2f, VirtualScreen.height - vector.y);
                break;

            case ButtonAnchor.LowerRight:
                vector2 = new Vector2(VirtualScreen.width - vector.x, VirtualScreen.height - vector.y);
                break;
            }
            buttonRect = new Rect(vector2.x + offset.x, vector2.y + offset.y, vector.x, vector.y);
        }
    }
    private void ComputeButtonAnchor(ButtonAnchor anchor)
    {
        if (this.normalTexture != null)
        {
            Vector2 vector = new Vector2(this.normalTexture.width * this.scale.x, this.normalTexture.height * this.scale.y);
            Vector2 zero = Vector2.zero;
            switch (anchor)
            {
                case ButtonAnchor.UpperLeft:
                    zero = new Vector2(0f, 0f);
                    break;

                case ButtonAnchor.UpperCenter:
                    zero = new Vector2((VirtualScreen.width / 2f) - (vector.x / 2f), this.offset.y);
                    break;

                case ButtonAnchor.UpperRight:
                    zero = new Vector2(VirtualScreen.width - vector.x, 0f);
                    break;

                case ButtonAnchor.MiddleLeft:
                    zero = new Vector2(0f, (VirtualScreen.height / 2f) - (vector.y / 2f));
                    break;

                case ButtonAnchor.MiddleCenter:
                    zero = new Vector2((VirtualScreen.width / 2f) - (vector.x / 2f), (VirtualScreen.height / 2f) - (vector.y / 2f));
                    break;

                case ButtonAnchor.MiddleRight:
                    zero = new Vector2(VirtualScreen.width - vector.x, (VirtualScreen.height / 2f) - (vector.y / 2f));
                    break;

                case ButtonAnchor.LowerLeft:
                    zero = new Vector2(0f, VirtualScreen.height - vector.y);
                    break;

                case ButtonAnchor.LowerCenter:
                    zero = new Vector2((VirtualScreen.width / 2f) - (vector.x / 2f), VirtualScreen.height - vector.y);
                    break;

                case ButtonAnchor.LowerRight:
                    zero = new Vector2(VirtualScreen.width - vector.x, VirtualScreen.height - vector.y);
                    break;
            }
            this.buttonRect = new Rect(zero.x + this.offset.x, zero.y + this.offset.y, vector.x, vector.y);
        }
    }
Пример #6
0
    void ComputeButtonAnchor(ButtonAnchor anchor)
    {
        if (normalTexture!=null){
            Vector2 buttonSize = new Vector2(normalTexture.width*scale.x, normalTexture.height*scale.y);
            Vector2 anchorPosition = Vector2.zero;

            // Anchor position
            switch (anchor){
                case ButtonAnchor.UpperLeft:
                    anchorPosition = new Vector2( 0, 0);
                    break;
                case ButtonAnchor.UpperCenter:
                    anchorPosition = new Vector2( VirtualScreen.width/2- buttonSize.x/2, offset.y);
                    break;
                case ButtonAnchor.UpperRight:
                    anchorPosition = new Vector2( VirtualScreen.width-buttonSize.x ,0);
                    break;

                case ButtonAnchor.MiddleLeft:
                    anchorPosition = new Vector2( 0, VirtualScreen.height/2- buttonSize.y/2);
                    break;
                case ButtonAnchor.MiddleCenter:
                    anchorPosition = new Vector2( VirtualScreen.width/2- buttonSize.x/2, VirtualScreen.height/2- buttonSize.y/2);
                    break;

                case ButtonAnchor.MiddleRight:
                    anchorPosition = new Vector2( VirtualScreen.width-buttonSize.x,VirtualScreen.height/2- buttonSize.y/2);
                    break;

                case ButtonAnchor.LowerLeft:
                    anchorPosition = new Vector2( 0, VirtualScreen.height- buttonSize.y);
                    break;
                case ButtonAnchor.LowerCenter:
                    anchorPosition = new Vector2( VirtualScreen.width/2- buttonSize.x/2, VirtualScreen.height- buttonSize.y);
                    break;
                case ButtonAnchor.LowerRight:
                    anchorPosition = new Vector2( VirtualScreen.width-buttonSize.x,VirtualScreen.height- buttonSize.y);
                    break;

            }

            //button rect
            buttonRect = new Rect(anchorPosition.x + offset.x, anchorPosition.y + offset.y ,buttonSize.x,buttonSize.y);
        }
    }