UGUI系统(常用控件)适应场景、使用方法(2)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lfanyize/article/details/102591248

Scroll View:(滚动视图)
参数:

Horizontal 是否启用水平滚动
Vertical 是否启用垂直滚动
MovementType 一共有三种模式,一种是Unrestricted、Elastic、Clamped,亲啊两种在桂东是可以强制内容保持在滚动巨型的边界内,另一种模式在内容到达滚动边缘时弹回内容
-Elasticity- -这是弹性模式中使用的反弹量-
Inertia 如果设置,则拖动指针移动之后,内容见继续移动,反之不会移动
Deceleration 设置Inertia的情况下,jiansulv(Deceleration)决定了内容停止移动的速度,速率为0时将立即停止速率为1的时候移动永不减速
-spacing- -滚动条与视口之间的空间-

其子对象中的Mesk组件:当有组件绘制在他后面,如果选中ShowMask Graphic 则在游戏界面是可以看到这个组件的,反之则不能看到
实例:创建一个ScrollView 在Content下面创建7个Image然后将Image的图片配置完成添加一个网格布局组件(AddComponent->Layout->Grid Layout)和内容适配器(ScrollRect)

加粗样式

UGUI布局管理

这部分市场被用作游戏奖励,由于事先不知道奖励的数量,但是依旧需要让奖励道具按照一定布局整齐的出现在整个界面中
1.水平布局(Horizontal Layout Group):选择Addcomponent->Layout Horizontal Layout Group 给游戏对象添加一个水平布局管理的组件其中参数如下

Padding 布局边缘的偏移量
Spacing 布局内的元素间距
Child Alignment 布局内元素的排列方式
-Control Child Size- -是否空值子物体缩放-
ChildForceExpend 自适应宽和高

垂直布局的参数与水平大致类似
效果图如下
在这里插入图片描述
需要注意的是,尽管我们把Image当做空物体的子对象了,但是还是需要一块画布,如果不讲他们放在画布Canvas中,Image是不会显示出来的

布局元素

Layout Elment是布局元素组件,该组件厂厂用于管理带有布局组对象的子物体
其下参数意义如下

Ignore Layout 是否受父本位置的影响
MinWidth 最小宽度
Preferred Width 在分配额外可用高度之前此布局元素应该有的偏好高度
-Fiexible Width- -此元素相对于同级的元素应有的额外可用高度的相对量-
Layout Priority 布局优先

内容适配器(Content Size Fitter)

在没有添加内容适配器之前,改变上一个例子的空物体的大小,Image的尺寸并没有什么界限,添加并且把Preferred Width 修改成300 ,这样之后,不管怎样修改空物体的尺寸,Image的最大尺寸为300,不会再发生变化

Aspect Ratio Fitter (宽高比适配器)

它可以调节高度,用来适应宽度,反之也是一样,给上一个例子中的空物体添加一个宽高比适配器,将Layout Element删掉
参数

AspectMode 宽高适配模式,共有五种模式,使用者可以根据自己的需要使用相应的模式
Aspect Ratio 宽高比率

不规则按钮的碰撞检测

给不规则的按钮添加 Polygon Collider 2D ,这是一个多边形的碰撞器组件,点击碰撞组件的Edit Colider之后,可以改变碰撞组件的大小。

常用的输入对象

Touch对象:开发人员可以通过Touch对象来获取Anfroid、IOS平台上的触摸操作等消息
参数:

fingerID 手指的索引
Position 手指触碰屏幕的位置
deltaPosition 距离上次改变的距离增量
-deltaTime- -自上次改变的时间增量-
tapCount 单击次数
Phase 触碰状态

Input输入对象
参数:

扫描二维码关注公众号,回复: 7661659 查看本文章
mousePosition 当前鼠标指针的像素坐标
anykey 当前是否有按键按下,若有返回true
anykeydown 用户单击任何键或者鼠标按钮,第一帧返回true
-inputstring- -返回键盘输入的字符串-
touches 返回当前触碰的列表

示例

if(Input.GetButtonDown("File1"))
        {
            Debug.Log("鼠标点击");
        }

anykey与anykeydown的区别,前者当用户按下按钮,并且持续按下不松开的情况,它会不断地输出信息,而后者不管用户按键的时间是多久,他都只会输出一次消息

inputstring变量:需要注意的是其功能时返回键盘在这一帧中输入的字符串,并且返回的字符串值包含输入的ASCLL码中的字符,如果本次没有输入的话就会返回一个空字符串

Touchs变量
实例

int firgercount = 0;
        foreach(Touch touch in Input.touches)
        {
            if(touch.phase == TouchPhase.Began)
            {
                Debug.Log("asd");
                firgercount++;
            }
        }

猜你喜欢

转载自blog.csdn.net/lfanyize/article/details/102591248