UGUI滑动条细节以及UGUI Atlas脚本

今天在做一个UGUI的滑动条的时候出了点问题,思路比较混乱

第一个问题是UI上的EventTrigger导致滑动条失效,导致手放在图标上不能滑动

第二个问题是UGUI里不能使用Atlas动态改变图标,后续Instantiate之后的图标我不知道如何处理。


先说下需求分析:

一个动态滑动列表(这个列表最终是需要根据读表来确认多少个)

滑动的数据具有点击事件,还需要一个遮幕去做一个Filled(也就是360顺时逆时转)动画。

然后我就错误的把问题想得太复杂了,做了一个类似于物品管理类的东西。

可能细节上是复杂了很多,但是功能还是实现了。

如果有更多的拓展的话,个人认为还是比较好拓展的。

但是

先分享unity里面的一些操作吧

1.建立一个image,挂载Scroll Rect 与Mask脚本

2.子节点建立一个gameobject,挂载Grid Layout Group(自动排序),Content Size Fitter(自动缩行)

3.在gameobject的字节下点 就是放置各种需要滑动的东西了,很显然这里的东西是有序的,所以我们一般只建立一个,剩下的动态加载就行。

在一个上面挂载DragScrollRect脚本,来解决第一个问题,至于拖动的问题,也可以自己寻找节点。

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class DragScrollRect : MonoBehaviour , IBeginDragHandler,IEndDragHandler,IDragHandler
{


    [HeaderAttribute("要拖动的ScrollRect")]
    public ScrollRect DragScroll;


    public void OnBeginDrag(PointerEventData eventData)
    {
        if (DragScroll != null)
        {
            DragScroll.OnBeginDrag(eventData);
        }
    }


    public void OnEndDrag(PointerEventData eventData)
    {
        if (DragScroll != null)
        {
            DragScroll.OnEndDrag(eventData);
        }
    }


    public void OnDrag(PointerEventData eventData)
    {
        if (DragScroll != null)
        {
            DragScroll.OnDrag(eventData);
        }
    }
}

接下来说下UGUI的Atlas,拿的是别人写好的一个东西, 所以我这里也不上源码了。 没什么意义,我会打包到网盘。

1.首先准备大图,可以用TP打包好

2.右键大图,Create  点击创建当前选择的图集,然后把生成的Atlas放在Resouce下,可以用Resouce加载

3.然后调用UIAtlas里面的SetSprite方法就能改变其图片了。

例如:atlas.SetSprite(ref image, id.ToString());

第一个参数是图片,第二个是他对应的名字。


UGUI Atlas的网盘地址:




你可能感兴趣的:(Unity技术储备)