unity 图片轮播,左右可切换
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PictrueMove : MonoBehaviour
{
public static PictrueMove instance;
/// <summary>
/// 每一个初始的状态
/// </summary>
private List<Transform> item = new List<Transform> { };
/// <summary>
/// 判断动画运动期间,不允许再点击
/// </summary>
private bool isPlay = true;
private float timer = 0.5f;
/// <summary>
/// 实例化的物体
/// </summary>
public GameObject prefabs;
void Start()
{
instance = this;
StartGame();
}
/// <summary>
/// 下一页
/// </summary>
public void NextPos()
{
if (isPlay == false) return;
isPlay = false;
StartCoroutine(animPlay());
for (int i = 0; i < item.Count; i++)
{
if (i > 0)
{
item[i].DOLocalMove(item[i - 1].localPosition, timer);
item[i].DOScale(item[i - 1].localScale, timer);
}
else
{
item[i].DOLocalMove(item[item.Count - 1].localPosition, timer).OnComplete(() => { });
item[i].DOScale(item[item.Count - 1].localScale, timer);
}
int number = item[i].GetComponent<PictrueItem>().index;
if (number == 0)
{
item[i].GetComponent<PictrueItem>().index = item.Count - 1;
}
else
{
item[i].GetComponent<PictrueItem>().index = number - 1;
if (number == 3)
{
item[i].SetSiblingIndex(4);
}
}
StartCoroutine(waitSecend(item[i]));
}
}
/// <summary>
/// 上一页
/// </summary>
public void LastPos()
{
if (isPlay == false) return;
isPlay = false;
StartCoroutine(animPlay());
for (int i = 0; i < item.Count; i++)
{
if (i <item.Count-1)
{
item[i].DOLocalMove(item[i + 1].localPosition, timer);
item[i].DOScale(item[i + 1].localScale, timer);
}
else
{
item[i].DOLocalMove(item[0].localPosition, timer).OnComplete(() => { });
item[i].DOScale(item[0].localScale, timer);
}
int number = item[i].GetComponent<PictrueItem>().index;
if (number == item.Count - 1)
{
item[i].GetComponent<PictrueItem>().index = 0;
}
else
{
item[i].GetComponent<PictrueItem>().index = number + 1;
if (number == 1)
{
item[i].SetSiblingIndex(4);
}
}
Cengji(item[i]);
if (item[i].GetComponent<PictrueItem>().index == 0)
{
FindPictrue.instance.Find(false,item[i]);
}
}
}
/// <summary>
/// 位置初始化
/// </summary>
private void StartGame()
{
int i = 0;
foreach (Transform go in transform)
{
item.Add(go);
go.GetComponent<PictrueItem>().index = i;
i++;
}
for (int j = 0; j < transform.childCount; j++)
{
Cengji(item[j]);
}
}
/// <summary>
/// UI显示优先级
/// </summary>
/// <param name="go">物体</param>
private void Cengji(Transform go)
{
int number = go.GetComponent<PictrueItem>().index;
switch (number)
{
case 0:
go.SetSiblingIndex(0);
break;
case 1:
go.SetSiblingIndex(3);
break;
case 2:
go.SetSiblingIndex(4);
break;
case 3:
go.SetSiblingIndex(2);
break;
case 4:
go.SetSiblingIndex(1);
break;
}
}
IEnumerator waitSecend(Transform go)
{
yield return new WaitForSeconds(timer/2);
Cengji(go);
if(go.GetComponent<PictrueItem>().index== item.Count - 1)
{
FindPictrue.instance.Find(true,go);
}
}
IEnumerator animPlay()
{
yield return new WaitForSeconds(timer);
isPlay = true;
}
}
代码挂在他的上面
找到图片代码
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class FindPictrue : MonoBehaviour
{
public static FindPictrue instance;
/// <summary>
/// 保底图片,库里没有文件的时候,作为显示的图片
/// </summary>
public Texture2D baodi;
/// <summary>
/// 图片存储位置,项目下的文件夹
/// </summary>
private string path = Directory.GetCurrentDirectory() + @"/Picture";
public static string[] dirs;
/// <summary>
/// 实例化图片索引
/// </summary>
public static int ImageNumber = 0;
public bool isMove = true;
public static int CountNumber = 0;
/// <summary>
/// 轮播物体
/// </summary>
public Transform item;
/// <summary>
/// 放大的图片
/// </summary>
public Image Da;
/// <summary>
/// 放大物体整体
/// </summary>
public RawImage fangda;
public bool isDa = false;
private void Awake()
{
instance = this;
dirs = Directory.GetFiles(path, "*.png");
Debug.Log("长度:"+dirs.Length);
}
void Start()
{
StartGame();
}
void Update()
{
}
private void StartGame()
{
for (int i = 0; i < item.childCount; i++)
{
if (dirs.Length == 0)
{
item.GetChild(i).GetComponent<PictrueItem>().xian(baodi);
}
else
{
StartCoroutine(GetTexture(dirs[ImageNumber], item.GetChild(i)));
AddSuoShow();
}
}
}
/// <summary>
/// 图片数量索引循环
/// </summary>
public void AddSuoShow()
{
ImageNumber++;
//Debug.Log("那个:" + ImageNumber);
if (ImageNumber >= dirs.Length)
{
ImageNumber = 0;
}
}
public void JianSuoShow()
{
ImageNumber--;
//Debug.Log("那个:" + ImageNumber);
if (ImageNumber <= 0)
{
ImageNumber = dirs.Length-1;
}
}
/// <summary>
/// 异步加载图片
/// </summary>
/// <param name="file">地址</param>
/// <returns></returns>
IEnumerator GetTexture(string file, Transform go)
{
//这里的地址可以填本地文件地址 file://[文件路径]
using (UnityWebRequest www = UnityWebRequestTexture.GetTexture(file))
{
yield return www.SendWebRequest();
if (www.isNetworkError)
{
Debug.Log(www.error);
}
else
{
/*这里把贴图转换的过程放到了后台线程来完成,
并且相比于直接脚本加载图片做了优化,减少了内存分配*/
Texture2D tx = DownloadHandlerTexture.GetContent(www);
go.GetComponent<PictrueItem>().xian(tx);
}
}
}
/// <summary>
/// 接收到的点击按钮信息
/// </summary>
/// <param name="name">按钮参数</param>
public void ReciveName(Texture2D tx)
{
isDa = true;
Da.gameObject.SetActive(true);
Da.color = new Color(0, 0, 0, 0);
fangda.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
fangda.transform.DOScale(new Vector3(0.9f, 0.9f, 0.9f), 1f).SetEase(Ease.InOutQuart);
Da.DOColor(new Color(0, 0, 0, 0.4f), 1f);
fangda.texture = tx;
MoveNumber.instance.StopnextPictru();
}
/// <summary>
/// 关闭放大图片
/// </summary>
public void DaQuit()
{
isDa = false;
fangda.transform.DOScale(new Vector3(0.5f, 0.5f, 0.5f), 1f).SetEase(Ease.InExpo).OnComplete(() =>
{
Da.gameObject.SetActive(false);
PictrueAnim.isStop = false;
});
Da.DOColor(new Color(0, 0, 0, 0f), 1f).SetEase(Ease.InExpo);
}
/// <summary>
/// 找到物体
/// </summary>
/// <param name="go">接受信息的物体</param>
public void Find(bool addNunmber ,Transform go)
{
if (dirs.Length == 0)
{
go.GetComponent<PictrueItem>().xian(baodi);
}
else
{
StartCoroutine(GetTexture(dirs[ImageNumber], go));
if (addNunmber)
{
AddSuoShow();
}
else
{
JianSuoShow();
}
}
}
}
图片可点击放大
unity 图片轮播,左右可切换相关推荐
- Unity图片轮播图功能实现
通过Unity+CurvedUI实现轮播效果,思路是将几张UI图按照较准确的位置放在空物体(作为父物体)下方,通过旋转父物体实现图片的旋转. 一.UI构建 简单构建UI结构,注意使用一个空物体作为几张 ...
- H5图片切换,js图片轮播,js图片自动切换
没有插入图片,效果如下: 注意:下面代码为PC端显示样式,如果要放在手机端,需要微调下style #wrapper.#banner..bg width 自行修改,我的手机端iphone5s 为 wid ...
- js/jquery中实现图片轮播
一,jquery方法 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...
- 纯CSS实现非常好看的图片轮播演示
简介: 这是一款使用纯 CSS 实现的非常好看的图片轮播/幻灯片,切换方式为淡入淡出 网盘下载地址: http://kekewangLuo.cc/5ZtqYb6bqd60 图片:
- Javascript实现图片轮播效果。
用js做一个简单的图片轮播效果. 思路如下:用JavaScript来控制轮播的图片的样式(margin-left).用计时器来控制图片的自动播放.鼠标点击控制图片的翻页. 效果图如下.具有以下功能:1 ...
- html轮播图jquery,原生js和jquery实现图片轮播特效
(1)首先是页面的结构部分 对于我这种左右切换式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以 ...
- Unity之使用贝塞尔曲线制作图片轮播
一.效果图 1.效果1 2.效果2 二.贝塞尔曲线 关于贝塞尔曲线的学习大家可以看这个文章进行学习https://blog.csdn.net/qq_39162826/article/details/1 ...
- unity实现图片轮播效果_Unity实现图片轮播组件
游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播.切页按钮控制.页码下标更新.滑动轮播.切页后的回调等等 . 下面,先上一个简陋的gif动态效果图 从图中可以看出,该示例包括了 ...
- 十个jQuery的幻灯片图片轮播切换插件[转]
1.Simple Controls Gallery 是基于jQuery的一个幻灯插件,非常不错,详细演示及下载请点击下面的链接 http://www.dynamicdrive.com/dynamici ...
最新文章
- 深度学习-最优化笔记
- 在Navicat中直接向表里添加数据
- linux shell trap的使用
- python使用xml布局界面_Python:使用ElementTree更新XML文件,同时尽可能地保留布局...
- windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...
- java date dateformat_java中Date与DateFormat的格式输出
- 【OpenCV 例程200篇】62. 图像锐化——钝化掩蔽
- 对象序列化和反序列化是怎么回事
- 打造kubernetes 高可用集群(nginx+keepalived)
- matlab simulink 六自由度机械臂模糊控制pid
- Linu系统——基础知识1
- C# NPOI 导出Excel 日期格式
- 日语输入法时的部分实用快捷键
- 第五届传智杯-初赛【B组-题解】
- 【linux】Could not update ICEauthority file /home/xxx/.ICEauthority问题解决
- 在Word中插入函数图象
- java MP3等格式转换和压缩
- navicat登录oracle问题
- 蓝牙耳机冷知识科普:蓝牙耳机版本对音质有什么影响吗?
- 农产品追溯系统免费源代码分享及下载---第2篇
热门文章
- 黑马程序员——单例设计模式
- 计算机专业博士未来的方向,清华学霸、UCLA计算机博士专业导师手把手教你申请...
- BI 和 AI 都有 I,是一回事吗?
- 赵启光谈《念奴娇 赤壁怀古》之美
- DOTA-PEG-麦芽糖 maltose-DOTA 麦芽糖-四氮杂环十二烷四乙酸
- 如何使用Android读取护照
- Android IQ自定义扩展(smack-4.1.9)
- 单片机黑屏怎么回事儿_电脑黑屏-采用强制关机几次才能从新启动,怎么回事。...
- 解决Navicat Premium 16报\Navicat-Cracker\NavicatCrackerDlg.cpp:463 ->Can‘t Generate Activation Code
- eCos消息机制学习