如何缩小按钮按钮

时间:2016-12-01 14:10:32

标签: c# button unity3d scale

在我的项目中,我有一个按钮,此按钮具有一定的大小并且有孩子。我的问题是所述按钮的命中框太大了,您可以从它所显示的图像外部点击它。

为此,我想保留按钮附带的所有动画和事件,但我想缩小它的hitbox。通过仅允许在图像的非透明部分上调用OnClick事件或通过缩小矩形命中来缩小它是否可能?我在网上搜索过,发现没有任何关于缩小它的说法,只是扩大了它。

这是我的按钮的样子:

  • MyButton:Image,Button,Animator

    • 标题:文字

    • 乘数:文字

    • 发光:图像,动画

当我按下按钮时,我改变了MyButton的图像并启用了它的动画图像,使其看起来发光。

有没有办法缩小按钮的命中箱?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以通过将此脚本添加到所述按钮,然后向其添加某种2D对撞机来实现此目的。我用它来做一些不规则形状的按钮。你可以使用适合你按钮的任何碰撞器。请注意,还有一种方法可以使点击忽略透明部分,但我更喜欢这个。

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(RectTransform), typeof(Collider2D))]
public class Collider2DRaycastFilter : MonoBehaviour, ICanvasRaycastFilter
{
    Collider2D myCollider;
    RectTransform rectTransform;

    void Awake()
    {
        myCollider = GetComponent<Collider2D>();
        rectTransform = GetComponent<RectTransform>();
    }

    #region ICanvasRaycastFilter implementation
    public bool IsRaycastLocationValid(Vector2 screenPos, Camera eventCamera)
    {
        var worldPoint = Vector3.zero;
        var isInside = RectTransformUtility.ScreenPointToWorldPointInRectangle(
            rectTransform,
            screenPos,
            eventCamera,
            out worldPoint
        );
        if (isInside)
            isInside = myCollider.OverlapPoint(worldPoint);
        return isInside;
    }
    #endregion
}