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 图片轮播,左右可切换相关推荐

  1. Unity图片轮播图功能实现

    通过Unity+CurvedUI实现轮播效果,思路是将几张UI图按照较准确的位置放在空物体(作为父物体)下方,通过旋转父物体实现图片的旋转. 一.UI构建 简单构建UI结构,注意使用一个空物体作为几张 ...

  2. H5图片切换,js图片轮播,js图片自动切换

    没有插入图片,效果如下: 注意:下面代码为PC端显示样式,如果要放在手机端,需要微调下style #wrapper.#banner..bg width 自行修改,我的手机端iphone5s 为 wid ...

  3. js/jquery中实现图片轮播

    一,jquery方法 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...

  4. 纯CSS实现非常好看的图片轮播演示

    简介: 这是一款使用纯 CSS 实现的非常好看的图片轮播/幻灯片,切换方式为淡入淡出 网盘下载地址: http://kekewangLuo.cc/5ZtqYb6bqd60 图片:

  5. Javascript实现图片轮播效果。

    用js做一个简单的图片轮播效果. 思路如下:用JavaScript来控制轮播的图片的样式(margin-left).用计时器来控制图片的自动播放.鼠标点击控制图片的翻页. 效果图如下.具有以下功能:1 ...

  6. html轮播图jquery,原生js和jquery实现图片轮播特效

    (1)首先是页面的结构部分 对于我这种左右切换式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以 ...

  7. Unity之使用贝塞尔曲线制作图片轮播

    一.效果图 1.效果1 2.效果2 二.贝塞尔曲线 关于贝塞尔曲线的学习大家可以看这个文章进行学习https://blog.csdn.net/qq_39162826/article/details/1 ...

  8. unity实现图片轮播效果_Unity实现图片轮播组件

    游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播.切页按钮控制.页码下标更新.滑动轮播.切页后的回调等等 . 下面,先上一个简陋的gif动态效果图 从图中可以看出,该示例包括了 ...

  9. 十个jQuery的幻灯片图片轮播切换插件[转]

    1.Simple Controls Gallery 是基于jQuery的一个幻灯插件,非常不错,详细演示及下载请点击下面的链接 http://www.dynamicdrive.com/dynamici ...

最新文章

  1. 深度学习-最优化笔记
  2. 在Navicat中直接向表里添加数据
  3. linux shell trap的使用
  4. python使用xml布局界面_Python:使用ElementTree更新XML文件,同时尽可能地保留布局...
  5. windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...
  6. java date dateformat_java中Date与DateFormat的格式输出
  7. 【OpenCV 例程200篇】62. 图像锐化——钝化掩蔽
  8. 对象序列化和反序列化是怎么回事
  9. 打造kubernetes 高可用集群(nginx+keepalived)
  10. matlab simulink 六自由度机械臂模糊控制pid
  11. Linu系统——基础知识1
  12. C# NPOI 导出Excel 日期格式
  13. 日语输入法时的部分实用快捷键
  14. 第五届传智杯-初赛【B组-题解】
  15. 【linux】Could not update ICEauthority file /home/xxx/.ICEauthority问题解决
  16. 在Word中插入函数图象
  17. java MP3等格式转换和压缩
  18. navicat登录oracle问题
  19. 蓝牙耳机冷知识科普:蓝牙耳机版本对音质有什么影响吗?
  20. 农产品追溯系统免费源代码分享及下载---第2篇

热门文章

  1. 黑马程序员——单例设计模式
  2. 计算机专业博士未来的方向,清华学霸、UCLA计算机博士专业导师手把手教你申请...
  3. BI 和 AI 都有 I,是一回事吗?
  4. 赵启光谈《念奴娇 赤壁怀古》之美
  5. DOTA-PEG-麦芽糖 maltose-DOTA 麦芽糖-四氮杂环十二烷四乙酸
  6. 如何使用Android读取护照
  7. Android IQ自定义扩展(smack-4.1.9)
  8. 单片机黑屏怎么回事儿_电脑黑屏-采用强制关机几次才能从新启动,怎么回事。...
  9. 解决Navicat Premium 16报\Navicat-Cracker\NavicatCrackerDlg.cpp:463 ->Can‘t Generate Activation Code
  10. eCos消息机制学习