[Unity学习]使用ScrollRect实现自动滚动到底部显示实时消息,并在拖动的时候取消自动滚动,再次手动滑到底部,又继续自动滚动

这篇具有很好参考价值的文章主要介绍了[Unity学习]使用ScrollRect实现自动滚动到底部显示实时消息,并在拖动的时候取消自动滚动,再次手动滑到底部,又继续自动滚动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先需要重写ScrollRect组件:

using UnityEngine.UI;
using UnityEngine.EventSystems;

public class MScrollRect : ScrollRect
{
    public bool isDrag;
    public override void OnDrag(PointerEventData eventData)
    {
        base.OnDrag(eventData);
        isDrag = true;
    }

    public override void OnEndDrag(PointerEventData eventData)
    {
        base.OnEndDrag(eventData);
        if (normalizedPosition.y<=0)
        {
            isDrag = false;
        }
    }
}

下面通过协程实现在不滚动ScrollRect的时候,自动滚动到底部。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public static class UIHelper
{
 	public static void AddScrollText(Text prefab, RectTransform contentRoot, string text, MScrollRect scrollRect)
    {
        if (contentRoot == null)
            return;

        var listItem = GameObject.Instantiate<Text>(prefab, contentRoot, false);
        listItem.text=text;

        if (scrollRect != null && scrollRect.isActiveAndEnabled)
            scrollRect.StartCoroutine(ScrollToBottom(scrollRect));
    }

    public static IEnumerator ScrollToBottom(MScrollRect scrollRect)
    {
        yield return null;

        if (scrollRect != null && scrollRect.isActiveAndEnabled&&!scrollRect.isDrag)
            scrollRect.normalizedPosition = new Vector2(0, 0);
    }
}

 

使用时,写下面类似代码即可:

using UnityEngine;
using UnityEngine.UI;

public class AutoScrollTest : MonoBehaviour
{
    public Text textPrefab;
    public RectTransform contentRoot;
    public MScrollRect scrollRect;
    private float interval = 1;
    private float time=0;
    private void Update()
    {
        time += Time.deltaTime;
        if (time>=interval)
        {
            AddText();
            time = 0;
        }
    }

    public void AddText()
    {
        UIHelper.AddScrollText(textPrefab, contentRoot, time.ToString(), scrollRect);
    }
}

Unity原生Scroll View更改配置如下:
unity 信息滚动,unity,unity,学习,游戏引擎
其中ScrollView游戏物体更改组件如下:
unity 信息滚动,unity,unity,学习,游戏引擎
content配置如下:
unity 信息滚动,unity,unity,学习,游戏引擎
实现效果如下:
unity 信息滚动,unity,unity,学习,游戏引擎
大功告成!加上对象池模式控制添加的text实例效果会更好哦。文章来源地址https://www.toymoban.com/news/detail-603566.html

到了这里,关于[Unity学习]使用ScrollRect实现自动滚动到底部显示实时消息,并在拖动的时候取消自动滚动,再次手动滑到底部,又继续自动滚动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【JS】设置滚动属性默认自动滚动到底部(overflow:scroll;)

    设置滚动属性默认自动滚动到底部: 场景:实现对话框,默认展示最新的对话内容 react 实现: 所需用到的css样式

    2024年02月07日
    浏览(33)
  • vue3 h5进入页面后自动滚动到底部

    背景: 在做h5项目中的聊天页面时,需求是进入页面自动滚到底部,方便用户看到最新消息(因为消息是正序排列的,最新消息自然展示在底部)。  直接上代码: 主要代码:

    2024年02月16日
    浏览(30)
  • 【Python_Selenium学习笔记(三)】基于Selenium模块实现无界面模式 & 执行JS脚本(把滚动条拉到底部)

    此篇文章主要介绍如何使用 Selenium 模块实现 无界面模式 执行JS脚本(把滚动条拉到底部),并以具体的示例进行展示。 创建浏览器对象之前,创建 options 功能对象 : options = webdriver.ChromeOptions() 添加无界面功能参数: options.add_argument(\\\"--headless\\\") 构造浏览器对象,打开浏览器,并

    2024年02月06日
    浏览(45)
  • WPF ListView MVVM模式下数据增加自动滚动到底部

    ListView 设置SelectedIndex属性不会滚动界面,只能通过ScrollIntoView方法设置,所以使用触发器检测 SelectedIndex ,使用扩展属性定义SelectedIndex的行为 手动引入 System.Windows.Interactivity Microsoft.Expression.Interactions xmal中添加声明

    2024年02月14日
    浏览(28)
  • 监听uniapp小程序页面滚动到底部实现数据加载

    使用微信小程序自带的生命周期事件:onReachBottom,可以监听到页面滚动到底部的时候。 修改获取数据的分页页数,配和uniapp组件加载更多,就可以实现下拉加载刷新的过程。 下面是示例 1.在data中初始化分页的页数  2.在监听到页面滚动到底部时,修改页数,调用获取数组的

    2024年02月12日
    浏览(27)
  • python爬取动态加载页面,selenium实现滚动到底

    最近的写爬虫的时候遇到一些问题,就是页面是动态加载的,抓包的时候发现页码不规律,于是想到用selenium控制浏览器自动拖拽滚动到底,找了好多方法直接是加载js的不太好用,看到一个博主的能用方法,我把他贴一下。 selenium实现无限滚动、循环滚动到底 这是我自己更

    2024年02月11日
    浏览(37)
  • Unity 3D ScrollRect和ScrollView回弹问题的解决

    Content高度 全部Cell加在一起的总高 他就认为你的全部Cell加起来就跟Content一样大,所以才出现了这种完全回弹 很简单, 改变Content的长度跟所有Cell的和一样大 更简单一点的组件方式,挂到Layout组件上

    2024年03月25日
    浏览(26)
  • 三、51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)

    1,目标         使用51单片机控制8位数码管,分别滚动显示单个数字0~7,程序运行之后,单片机先控制最左边的第一位数码管显示0,其他的熄灭,延时一段时间之后,控制左边第二个数码管显示1,其它熄灭,以此类推,反复循环上述过程。 2,设计方式         使用P0输出

    2024年02月13日
    浏览(31)
  • 【Unity】使用Unity实现双屏显示

    在使用Unity的时候,有时候会需要使用双屏显示 简单来说就是需要在两个显示器中显示游戏画面 双屏显示注意点: ①双屏显示需要电脑有两个显示 ②双屏显示只能用于PC端 ③不仅仅可以双屏,Unity最大支持8屏显示 ①我们打开Unity后,新建一个Scene场景 ②在场景中新添加一个

    2024年04月14日
    浏览(34)
  • css实现滚动条一直显示,并且实现滚动条样式的修改

    自带的滚动条只有当鼠标移上去的时候才会显示,其他时候隐藏,这样用户很难看出这个是能划动的,这就需要滚动条一直显示在页面上,并且需要按照自己一定的样式去修改。 实现效果:

    2024年02月09日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包