Unity开发不定期归纳总结2

2020-07-23  本文已影响0人  达屯菜狗

设置固定比例自动适配的UI组件

之前在制作UI组件时,当屏幕上有多个子物体同时撑满一个画布时,会通过设置绝对值得方式来设置不同的子控件父对象在基画布上的Strech位置,如下图:

绝对值设置

但是这样做就带来一个问题,在进行横竖屏UI适配时,上方控件的高度因为是绝对值250,在各种机型变换时只有高:宽小于原比例后才能开始缩放,如下图:

某些时候我们希望可以实现持续的比例缩放,即上下比例按照最初的设计在适配时持续变化;于是在制作时就要打开Gizmos使得我们可以快速的可视化的调整控件锚点。在此之前我们将绝对值还原为0,然后调整锚点位置如下图:

比例适配,忽略中间差点旋转的误操作ˊ_>ˋ

这样操作完毕之后我们再来看看适配的效果。

持续等比例缩放

这样就大功告成了。

使用Layout Element实现UGUI相对于某个物体对齐

UGUI并没有给我们提供在同层级下相对于某个物体A对齐的方式,即如果物体A运动那相应的设置好的物体也应该按设置好的数据进行运动。之前都是给A建一个子物体来实现,但某些情况下必须在同层级处理。这就需要我们对物体A的父物体添加某种Layout布局组建后添加ContenSizeFitter,对需要设置的物体添加Layout Element同时设置为Ignore Layout,然后将该物体的Strech方式设置为你想要的方式既可以。

获取和设置一个Image物体的Width和Height

开发过程中会遇到需要拿到某个Image的大小并设置给其他图片,首先声明一个Rect变量用来存储要取得的图片的RectTransform的rect属性,然后直接将Rect变量的width和height声明为一个新的Vector2并赋值给需要设置的图片的sizeDelta。

实例:

Rect origiRect = icon.gameObject.GetComponent<RectTransform>().rect;

cloneIcon.GetComponent<RectTransform>().sizeDelta = new Vector2(origiRect.width, origiRect.height);

引申一下,需要拿到某个UGUI控件的大小都可以这么操作。

获取当前Canvas的真实像素大小

在Canvas进行各种手机屏幕适配的时候,我们通常会加入CanvasScaler来协助调整画布大小适配不同机型,但同时就给某些需要在特定物体的相对位置的弹窗生成造成了一定的困扰,需要取到当前Canvas的真实像素尺寸,很简单:

float realScreenWidth = gameObject.GetComponent<CanvasScaler>().referenceResolution.y;

长按事件搭建

为当前物体添加脚本,脚本中继承IPointerDownHandler和IPointerUpHandler在继承的函数内分别实现想要的长按事件及抬起手指效果。

另一种更加可视化的方法是,为当前物体添加EventTrigger控件,然后在其中添加所需类型,如PointerDown及PointerUp,之后在下拉列表中拖入想要调用的对象以及对象身上的方法。

上一篇 下一篇

猜你喜欢

热点阅读