Unity ScrollView循环滚动播放(有详细注释)

这篇具有很好参考价值的文章主要介绍了Unity ScrollView循环滚动播放(有详细注释)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity3D ScrollView循环滚动播放

首先创建一个ScrollView在UI上
unityscrollview环形滚动,unity,游戏引擎
在Content上挂载脚本,将ScrollView赋值给Parent。
unityscrollview环形滚动,unity,游戏引擎
当Content的高度大于ScrollView的容量高度时便开始滚动。
以下是脚本代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ProfileContentRoll : MonoBehaviour
{
    /// <summary>
    /// 内容区域RectTransform
    /// </summary>
    private RectTransform rect;
    /// <summary>
    /// ScrollView
    /// </summary>
    public GameObject Parent;
    /// <summary>
    /// ScrollView的RectTransform
    /// </summary>
    private RectTransform parentRect;
    /// <summary>
    /// 起始Y值
    /// </summary>
    private float rectOriginY;
    /// <summary>
    /// 滚动速度
    /// </summary>
    private const float rollSpeed = 30;

    /// <summary>
    /// 是否底部
    /// </summary>
    private bool isAtBottom = false;
    /// <summary>
    /// 是否滚动
    /// </summary>
    private bool isRoll = true;
    /// <summary>
    /// 能否运行协程
    /// </summary>
    private bool canStartCoroutine = true;
    /// <summary>
    /// 内容高度是否大于窗口高度
    /// </summary>
    private bool isContentBiggerThanView = false;
    /// <summary>
    /// 等待时间
    /// </summary>
    private int waitTime = 5;
    // Start is called before the first frame update
    void Start()
    {
        rect = GetComponent<RectTransform>();
        parentRect = Parent.GetComponent<RectTransform>();
        rectOriginY = rect.position.y;
    }

    // Update is called once per frame
    void Update()
    {
        isContentBiggerThanView = rect.sizeDelta.y > parentRect.sizeDelta.y;
        isAtBottom = rect.position.y - rectOriginY >= rect.sizeDelta.y - parentRect.sizeDelta.y;
        //如果滚动到底,运行协程
        if(isAtBottom && isRoll && canStartCoroutine && isContentBiggerThanView)
        {
            canStartCoroutine = false;
            StartCoroutine(StopAndBack());
        }
        //滚动
        if (isRoll && isContentBiggerThanView)
        {
            rect.position = new Vector3(rect.position.x, rect.position.y + rollSpeed * Time.deltaTime, 0);
        }
    }
    /// <summary>
    /// 返回顶部
    /// </summary>
    private void BackToTop()
    {
        rect.position = new Vector3(rect.position.x, rectOriginY, 0);
    }
    IEnumerator StopAndBack()
    {
        isRoll = false;
        //结尾停
        yield return new WaitForSeconds(waitTime);
        BackToTop();
        //开头停
        yield return new WaitForSeconds(waitTime);
        isRoll = true;
        canStartCoroutine = true;
    }
}


效果如下(结尾和开头会停留1秒):

unityscrollview环形滚动,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-724531.html

到了这里,关于Unity ScrollView循环滚动播放(有详细注释)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 如何实现卡片循环滚动效果

    功能需求如图所示,点击下一个按钮,所有卡片向右滚动,其中最后一张需要变更为最前面的一张,点击上一个按钮,所有卡片向左滚动,最前面的一张需要变更为最后一张,实现循环滚动效果。 最中间的一张表示当前选中项,变更为选中项的滚动过程中,需要逐渐放大到指

    2024年02月03日
    浏览(40)
  • Android 的 ScrollView (滚动条)

    本节带来的是Android基本UI控件中的第十个: ScrollView (滚动条),或者我们应该叫他 竖直滚动条,对应的另外一个水平方向上的滚动条: HorizontalScrollView ,先来一发官方文档 的链接:ScrollView,我们可以看到类的结构如下: 嘿嘿,原来是一个FrameLayout的容器,不过在他的基础上

    2024年02月12日
    浏览(26)
  • Unity TimeLine循环播放某个时间段

    1、设置Playable Director的Update Method为GameTime模式 2、API : using UnityEngine.Playables; 我们需要用到PlayableDirector的time属性 3、设置开始和结束时间段(使用的帧率)我在0-158帧循环和158到290帧之间循环 4、代码 代码笔记

    2024年02月11日
    浏览(40)
  • 微信小程序 scrollview 滚动到指定位置

    在微信小程序中,实现 ScrollView 滚动到指定位置有多种方法,下面将介绍三种主要的实现方式。 通过设置 scroll-view 组件的 scroll-top 属性,我们可以实现滚动到指定位置。以下是具体实现方式: 滚动逻辑: 在上述代码中,scroll-top是一个动态数据,通过手动改变scroll-top的值来

    2024年02月04日
    浏览(28)
  • Swift 让ScrollView滚动到具体某个位置

    1. 使用 scrollToItem 方法滚动集合视图 上述代码中,首先使用 scrollToItem 方法将集合视图滚动到第一条数据(左侧对齐),然后在稍后的延迟时间后,再次使用 scrollToItem 方法将其滚动到最后一条数据(左侧对齐)。 2. 使用 setContentOffset 方法来滚动集合视图 上述代码中,我们使

    2024年02月15日
    浏览(29)
  • 【Android Studio】常用布局 --- 滚动视图ScrollView

    问题引入 :手机屏幕的显示空间有限,常常需要上下滑动或左右滑动才能拉出其余页面内容,可惜一般的布局节点 都不支持自行滚动,这时就要借助滚动视图了。与线性布局类似,滚动视图也分为垂直方向和水平方向 两类,其中垂直滚动视图名为ScrollView,水平滚动视图名为

    2023年04月11日
    浏览(36)
  • 小程序中的canvas不跟随scrollView滚动

    问题原因,官方文件说明:canvas为原生组件故有一下的性质: 原文链接:https://blog.csdn.net/qq_25740691/article/details/81867382 解决方法1:看看是不是给最外层标签page定义了height:100%的属性或者overflow相关的属性,如果是的话去掉。检查你的canvas的所有父级元素是否设置了height:1

    2024年02月06日
    浏览(28)
  • 基于Python的数据结构实验——循环顺序队列与递归(附详细代码和注释)

    1、创建名为 prac04_01.py 的文件,在其中编写一个循环顺序队列的类,该类必须包含 循环顺序队列的定义及基本操作,并通过以下步骤测试各种基本操作的实现是否正确。 (1)初始化一个循环顺序队列 CircularSequenceQueue。 (2)判断队列是否为空。 (3)遍历队列内的所有元素。 (4)将元

    2024年02月05日
    浏览(42)
  • Unity Animation动画循环播放时卡顿、不连贯问题解决办法

    一、动画卡顿: 如上图,可看到,当循环播放动画时,动画像瘸了似的,一会块,一会慢,总之就是不连贯; 二、解决办法: 打开该元素对应的Animation,然后选中下方的Curves动画曲线,在这里我们可以看到,该动画是一条S型曲线,故而播放速度才会时快时慢; 在这里,我

    2024年02月12日
    浏览(31)
  • 小程序<scroll-view>滚动到指定位置/scrollview

    注意里面的 scroll-into-view=“{{scrollId}}” 和 id=“scrollView{{index}}” 属性。 当scrollId和scroll-view 组件中元素的id相同时 界面将自动滚动到此位置

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包