void CancelButton() { if (lastButton != null) { lastButton.Canceled(); lastButton = null; } }
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); } }
// 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; } }
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); } }
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); } }