第十四篇:UE4和Unity如何实现不规则按钮的点击

在平时开发中,难免会遇到需要使用不规则按钮的需求,我记得在以前面试的时候也遇到过这种提问,今天就给大家介绍一下Unity和UE4这两个引擎如何实现这种不规格按钮的点击。
因为不论在Unity还是UE4中,按钮形状都是长方形的,那么不规则按钮我们就需要用到一张带Alpha值的图片,如图所示,黄色框是按钮整个的形状,但是我们想实现只点击红色区域触发点击事件,显然红色区域的Alpha值不为0,而其他区域则为0,所以实现不规则按钮点击的核心就是根据Alpha值来决定触不触发按钮事件。

在这里插入图片描述

在Unity中,它为Image提供了一个alphaHitTestMinimumThreshold的属性,这个属性提供了一个阈值来限制射线检测生效的alpha值。也就是说,比如我们将阈值设为0.5(该值类型为float,有效范围0到1),那么点击Image上像素的alpha值小于0.5的区域时,程序是不会触发点击事件的。需要注意的是,使用alphaHitTestMinimumThreshold属性需要开启sprite的Read/Write Enbale属性。
在这里插入图片描述

脚本如下,在Awake函数中设置alphaHitTestMinimumThreshold 的值

 void Awake () {
        Image image = GetComponent<Image>();
        image.alphaHitTestMinimumThreshold = 0.1f;
	}

那么在UE4中如何实现呢?首先新建一个C++类,定义两个变量

UTexture2D* AdvancedHitTexture;  //检测的Texture
int AdvancedHitAlpha;   //设置引起触发事件的Alpha值

并且为Texture添加一个属性分类叫AdvancedHitTest

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "AdvancedHitTest") UTexture2D* AdvancedHitTexture;

完整代码我就不贴了,编译后就会多一种UI控件叫AlphaButton,他比一般的Button多一个分类叫Advanced Hit Test,它包含两个属性值Advanced Hit Texture和Advanced Hit Alpha。将Texture指定为我们需要用到的图片,Alpha值设定为1。
在这里插入图片描述
在这里插入图片描述

这样,两个不规则按钮的点击都实现了。

demo地址:
链接:https://pan.baidu.com/s/1gICBTkAyKlXaZ0iasLjuhA
提取码:pbwk

猜你喜欢

转载自blog.csdn.net/Sxx930923/article/details/86468823
今日推荐