功能:自动播放移动 首尾相接  鼠标移到图片上 时 移动停止并 该图片变大  鼠标离开图片恢复原形 轮播效果继续

效果如下

界面布局 大体是这个样子

scrollView就是一个底板带Image组件

Viewport负责遮罩带Mask组件

然后content前期布局使用了Group组件 不过项目需求图片尺寸要变化 所以之后关闭

子类Image是一张张图片

初版轮播 上代码

using UnityEngine;

using System.Collections;

using UnityEngine.EventSystems;

using UnityEngine.Events;

using System.Collections.Generic;

/**

*两个背景图片平移

*/

public class BackgroundController : MonoBehaviour

{

public GameObject back1;

public GameObject back2;

public int speed = 1; //背景平移的速度

public Transform endPosition; //到达该位置,把背景移动到开始位置

public Transform startPosition; //背景从开始位置移动到结束位置

//是否移动

private bool isMove = true;

void Update()

{

if (isMove == true)

{

//两个图片的平移

back1.transform.position = new Vector3(back1.transform.position.x - speed * Time.deltaTime, back1.transform.position.y, back1.transform.position.z);

back2.transform.position = new Vector3(back2.transform.position.x - speed * Time.deltaTime, back2.transform.position.y, back2.transform.position.z);

//到达结束位置,回到开始位置,切换图片

if (back1.transform.position.x <= endPosition.transform.position.x)

{

back1.transform.position = startPosition.transform.position;

}

if (back2.transform.position.x <= endPosition.transform.position.x)

{

back2.transform.position = startPosition.transform.position;

}

}

}

}

这一步是 两个底板 首尾相连 update里一起运动 检测到达目标点 更换到尾部位置 初步轮播效果实现

下一步 上代码(完整版)

using UnityEngine;

using System.Collections;

using UnityEngine.EventSystems;

using UnityEngine.Events;

using System.Collections.Generic;

/**

*两个背景图片平移

*/

public class BackgroundController : MonoBehaviour

{

public GameObject back1;

public GameObject back2;

public int speed = 1; //背景平移的速度

public Transform endPosition; //到达该位置,把背景移动到开始位置

public Transform startPosition; //背景从开始位置移动到结束位置

private GameObject[] ContentChilders = new GameObject[14];

void Start()

{

//进入检测添加

UnityActionclick = new UnityAction(OnPointerEnter);

EventTrigger.Entry myclick = new EventTrigger.Entry();

myclick.eventID = EventTriggerType.PointerEnter;

myclick.callback.AddListener(click);

//移出检测添加

UnityActionclick1 = new UnityAction(OnPointerExit);

EventTrigger.Entry myclick1 = new EventTrigger.Entry();

myclick1.eventID = EventTriggerType.PointerExit;

myclick1.callback.AddListener(click1);

int i = 0;

foreach (Transform childer in back1.transform)

{

ContentChilders[i] = childer.gameObject;

EventTrigger trigger = ContentChilders[i].AddComponent();

trigger.triggers.Add(myclick);

trigger.triggers.Add(myclick1);

i++;

}

foreach (Transform childer in back2.transform)

{

ContentChilders[i] = childer.gameObject;

EventTrigger trigger = ContentChilders[i].AddComponent();

trigger.triggers.Add(myclick);

trigger.triggers.Add(myclick1);

i++;

}

}

private RectTransform selObject;

private void OnPointerEnter(BaseEventData arg0)

{

isMove = false;

PointerEventData P_EveDat = arg0 as PointerEventData;

selObject = P_EveDat.pointerCurrentRaycast.gameObject.transform as RectTransform;

selObject.sizeDelta = new Vector2(200, 200);

}

private void OnPointerExit(BaseEventData arg0)

{

isMove = true;

selObject.sizeDelta = new Vector2(160, 160);

}

//是否移动

private bool isMove = true;

void Update()

{

if (isMove == true)

{

//两个图片的平移

back1.transform.position = new Vector3(back1.transform.position.x - speed * Time.deltaTime, back1.transform.position.y, back1.transform.position.z);

back2.transform.position = new Vector3(back2.transform.position.x - speed * Time.deltaTime, back2.transform.position.y, back2.transform.position.z);

//到达结束位置,回到开始位置,切换图片

if (back1.transform.position.x <= endPosition.transform.position.x)

{

back1.transform.position = startPosition.transform.position;

}

if (back2.transform.position.x <= endPosition.transform.position.x)

{

back2.transform.position = startPosition.transform.position;

}

}

}

}

首先 foreach 获取两个组里的所有图片子类  然后给图片子类添加事件监听

EventTriggerType.PointerExit;鼠标移出的监听  对应 OnPointerEnter当鼠标进入图片的相应事件

EventTriggerType.PointerEnter 鼠标进入图片的监听

当鼠标进入图片进行 处理  停止轮播效果-->获取当前图片的尺寸-->进行尺寸放大

isMove = false;//停止轮播效果

PointerEventData P_EveDat = arg0 as PointerEventData;

selObject = P_EveDat.pointerCurrentRaycast.gameObject.transform as RectTransform;

selObject.sizeDelta = new Vector2(200, 200);

同理 鼠标移出图片进行 处理  开始轮播效果-->获取当前图片的尺寸-->进行尺寸还原

//demo地址

链接:https://pan.baidu.com/s/1hD_FcARkoetWMFq-Cqrqsg 密码:9a2m

unity实现图片轮播效果_Unity 制作图片轮播功能相关推荐

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

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

  2. html图片翻页效果代码,js图片翻书效果代码分享

    这是一款基于javascript实现图片翻书效果代码,图片可以从左右两个方向进行切换,用户还可以自定义对应图片的标题与文字说明,是一款非常实用的图片特效源码. 七夕情人节也可以是表白的神器,放一些回忆 ...

  3. unity实现图片轮播效果_unity 背景无限循环滚动效果

    背景无限循环滚动效果如下示: 步骤如下: 导入背景图片后,设置图片的格式,如下图: 2.图片格式也可以设置是Texture格式,但是Wrap Mode 一定要是Repeat[重复发生]:然后记得App ...

  4. php轮播效果代码,CSS实现轮播图效果(附代码)

    CSS实现轮播图效果(附代码) 理论基础 CSS3 animation 属性和 @keyframes 规则 主体思想 1.准备相同大小的多个图片 2.将要展示图片横排放在一个图片容器里面 3.在图片容 ...

  5. 【Unity】刮刮乐效果(擦除图片像素值)

    实现类似刮刮乐效果,擦除图片指定像素值(修改图片Alfa通道) 参考Unity刮刮乐工程源码的实现原理,对实现方式有一些调整 这里RawImage需要保持原图大小,不能缩放,不然坐标计算会有偏差 us ...

  6. jar包导出无法显示图片或者音乐_如何制作图片视频短片,配上音乐闪耀朋友圈!...

    把图片制作成视频短片,再配上一首好听的音乐,发到朋友圈,不仅可以更具创意的分享自己的生活点滴,更能因您的创意获得一大票的赞哦!看到别人分享自己制作的图片视频短片,是不是心痒痒也想做一个呢?今天就教你使 ...

  7. css背景图片高斯模糊_CSS3 filter(滤镜) 制作图片高斯模糊无需JS

    本帖最后由 fengrui99 于 2019-7-8 11:20 编辑 这是一个寂寞的工作日,因为没有女盆友所以很寂寞,因为很寂寞所以来写教程.希望再看教程的你也是单身!啊,知道你是单身枫瑞贼开心!爽 ...

  8. html做图片模糊效果,CSS3 filter(滤镜) 制作图片高斯模糊无需JS

    CSS3 filter(滤镜) 制作图片高斯模糊无需JS 这是一个寂寞的工作日,因为没有女盆友所以很寂寞,因为很寂寞所以来写教程.希望再看教程的你也是单身!啊,知道你是单身枫瑞贼开心!爽的一B!!!起 ...

  9. 制作关于计算机的ppt图片,10步教你制作图片墙PPT封面

    PPT封面设计相信对于很多朋友们来说,一直都是比较头疼的问题.很多朋友在PPT封面时,尤其是PPT图片墙封面时往往得不到其中的设计要领. (电脑入门到精通网 www.58116.cn) 图片墙,是由不 ...

最新文章

  1. iOS 性能优化总结
  2. python培训班价格-成都Python课程
  3. NetCDF Overview
  4. 制作本地 CentOS-7-x86_64-Everything-2009.iso对应的源
  5. leetcode 119. 杨辉三角 II
  6. proxy connect abort处理方法_Java代理设计模式(Proxy)的几种具体实现
  7. 揭秘政企安全加速解决方案的架构与应用场景实践
  8. java+arrayblockquene_Java源码分析-ArrayBlockingQueue
  9. 频发:记ADG备库日志应用延迟的一次故障处理-云和恩墨技术通讯精选
  10. 目标检测算法之FPN(附FPN代码实现)
  11. php是否支持64位,phpstudy默认不支持64位php的解决方法
  12. extern 详解(内有extern C 讲解)
  13. .htaccess跳转https
  14. Golang中unsafe.Sizeof()的问题
  15. 计算机软件著作权模板及个人申请全套攻略-软著
  16. nfc修改饭卡软件下载_手机nfc模拟门禁卡app-NFC卡模拟软件中文版下载安卓标准版-西西软件下载...
  17. PHP 实现防抖功能(防重复请求)
  18. 关于微信开发者没有上传按钮的问题
  19. SAP 物料评估类未填写
  20. kafka eagel的使用

热门文章

  1. 今天是我的生日,也是我的离职日!
  2. canvas应用——圆角矩形图片
  3. npm install node-sass的时候报错ERR gyp ERR C++
  4. CorelDraw论坛cdr2022V24.0.0301简体中文包
  5. 错误:类 SubClass 是公共的, 应在名为 SubClass.java 的文件中声明
  6. GTD时间管理工具Omnifocus 3 Mac中文版
  7. C语言有大约40个运算符,最常用的有这些
  8. 基于编码应用的主观全景视频质量评价数据库(译)
  9. mac 修改 DNS
  10. 基于图像特征点匹配的三维立体重建