unity 图片轮播,左右可切换
using DG.Tweening;using System.Collections;using System.Collections.Generic;using UnityEngine;public class PictrueMove : MonoBehaviour{public static PictrueMove instance;/// <summary>/// 每一个初始的状
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();
}
}
}
}
图片可点击放大
更多推荐
所有评论(0)