Unity实现图片轮播功能
Unity实现图片无限循环轮播(横and竖)先来看看效果横实现介绍:只可以左右按键控制图片的切换,可无限扩展图片数量思路:首尾相连。尾图片与首图片互换位置以及动画效果主要代码:RectTransform[] tfs;//需要扩展只需往该数组添加Item即可void LeftBtnClickEvent(){for (int i = tfs.Length; i > 0; i--){int tem
·
Unity实现图片无限循环轮播(横and竖)
先来看看效果
- 横
实现
- 介绍:只可以左右按键控制图片的切换,可无限扩展图片数量
- 思路:首尾相连。尾图片与首图片互换位置以及动画效果
- 主要代码:
RectTransform[] tfs; //需要扩展只需往该数组添加Item即可
void LeftBtnClickEvent()
{
for (int i = tfs.Length; i > 0; i--)
{
int tem = i % tfs.Length; //首尾连接关键
if (tem == 0)
{
tfs[tem].anchoredPosition = tfs[i - 1].anchoredPosition;
tfs[tem].sizeDelta = tfs[i - 1].sizeDelta;
}
else
{ //DOTween动画过渡
tfs[tem].DOAnchorPos(tfs[i - 1].anchoredPosition, 0.2f);
tfs[tem].DOSizeDelta(tfs[i - 1].sizeDelta, 0.2f);
}
}
}
- 竖
- 介绍:上下拖拽、滚轮、点击按钮都可切换图片
- 思路:2D触发器,Lerp线性平滑动画
- 主要代码:
Init.cs
private void Update()
{
//处理动画
if (!isPlay) return;
float tem = Mathf.Lerp(View.anchoredPosition.y, Pos, 0.15f);
View.anchoredPosition = new Vector2(View.anchoredPosition.x, tem);
Invoke("Setplay",0.4f);
}
Logic.cs
public static void TargetPosMove(string _num, UnityAction<int> onProcess)
{
if (_num == "1")
{
onProcess.Invoke(0);
}
else
{
onProcess.Invoke((int.Parse(_num) - 1) * 70);
}
}
/// <summary>
/// 移动
/// </summary>
/// <param name="num"></param>
public static void Move(string num)
{
//警报器
Logic.TargetPosMove(num, pos =>
{
Init.Pos = pos;
Init.isPlay = true;
});
}
源码
需要源码请点击链接下载,顺手写的功能,不合理的地方请大佬们指点!
github地址: https://github.com/AnyAnq/Calendar
更多推荐
所有评论(0)