新手引导的意义:
通过一些指定的操作,来让玩家快速的了解游戏的基本玩法。
指定流程:
一般情况下,我们需要点击的按钮都是高亮的状态,而不能点击的位置或者按钮都是灰暗色的一个颜色或者状态。那么这一种我们怎么实现呢?
实现矩形引导
在一个矩形的区域内,是可以点击的,矩形区域外是不可以点击的。
创建一个Image(在panel或者Canvas下),给它的锚点设置成站满父物体,颜色改为暗色系,透明一下。这样就把我们这张Image下面的UI都不能点击了,那么我们下一步就是把矩形区域给制造出来,这时候就用到了Shader(着色器)。使用Shader的话我们需要一个载体,这个载体是什么?
材质!(创建两个材质球,一个圆形,一个方形)这里需要设置我们的材质球,将Shader拖拽到我们的材质球上,就可以设置我们材质球的Shader,我们把设置好的材质球赋值给我们的Image图片,这个时候你就会发现,我们的图片,全都透明了!这是什么原因呢?
因为我们材质球的参数没有改,一个是SliderX和一个SliderY(我们可以看成我们要镂空的宽和高)。这个时候自己调就可以了(拖动进度条进行调试),还有一个参数:Center : 它有着XYZW的属性,我们可以通过设置它的属性来调整镂空位置的中心点,将镂空的位置定位到我们需要的位置。我们只需要用代码设置(材质)镂空的位置,让他出现在一个指定的区域就差不多了。
然后查找到我们的target,也就是要显示的目标,目标找到之后我们要获取中心点: target.GetWorldConers(targetCorners)这样我们就可以获取到边界的四个点,获取到这四个点之后我们就可以根据这四个边界的点来计算我们的中心点。(通过GetWorldConers()方法获取的四个点的位置是世界坐标,并不是屏幕坐标,这里需要转换一下)
这样就转换完成了(区域坐标)。转换完之后我们来计算中心点
然后给材质赋值中心点:(这是要注意Shader中的Center的名字)
之后再计算宽和高:
后面的代码是给材质赋值,因为宽和高是float类型的,所以这里用的是SetFloat(),这里也要注意Shader里面的宽和高的名字,要对应一致才能进行更改。这样我们就完成了一个矩形的区域设置。
实现圆形引导
圆形的和矩形的基本相同,只是宽高等不一样(圆形的需要的是半径)。
根据三角形的勾股定理来求出半径,并赋值给材质
对于矩形和圆形你以为完了嘛?当然没有那么简单,这时候虽然镂空的位置在我们要点击的按钮上面,但是我们这个按钮还是不能点击的,这个时候就要用到一个叫做事件渗透的东西。(看封装新手引导)
封装新手引
事件渗透功能:
继承ICanvasRaycastFilter接口,实现接口IsRaycastLocationValid(Vector2 sp, Camera eventCamera)的方法就可以实现事件渗透了。