UGUI轮播图组件实现方法详解轮播图组件实现方法详解
本文实例为大家分享了UGUI轮播图组件实现的具体代码,供大家参考,具体内容如下
要用到,于是就自已做了一个,自认为封装上还是OK的,开发于unity5.1.2。
支持自动轮播、手势切换、代码调用切换,支持水平和竖直两个方向以及正负方向轮播,轮播索引改变有回调可以用,也可以
获取到当前处于正中的子元素。
要注意的是,向轮播列表中加入新元素不能直接setparent,要调用该组件的AddChild方法
下面是鄙人的代码:
/// 主要关注属性、事件及函数:
/// public int CurrentIndex;
/// public Action<int> OnIndexChange;
/// public virtual void MoveToIndex(int ind);
/// public virtual void AddChild(RectTransform t);
/// by yangxun
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
/// <summary>
/// 轮播图组件
/// </summary>
[RequireComponent(typeof(RectTransform)), ExecuteInEditMode] public class Carousel : UIBehaviour, IEventSystemHandler, IBeginDragHandler,
IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, ICanvasElement {
/// <summary>
/// 子物体size
/// </summary>
public Vector2 CellSize;
/// <summary>
/// 子物体间隔
/// </summary>
public Vector2 Spacing;
/// <summary>
/// 方向
/// </summary>
public Axis MoveAxis;
/// <summary>
/// Tween时的步数
/// </summary>
public int TweenStepCount = 10;
/// <summary>
/// 自动轮播
/// </summary>
public bool AutoLoop = false;
/// <summary>
/// 轮播间隔
/// </summary>
public float LoopSpace = 1;
/// <summary>
/// 轮播方向--1为向左移动,-1为向右移动
/// </summary>
public int LoopDir = 1;
/// <summary>
/// 可否拖动
/// </summary>
public bool Drag = true;
/// <summary>
/// 位于正中的子元素变化的事件,参数为index
/// </summary>
public Action<int> OnIndexChange;
/// <summary>
/// 当前处于正中的元素
/// </summary>