Unity 3D ScrollRect和ScrollView回弹问题的解决

这篇具有很好参考价值的文章主要介绍了Unity 3D ScrollRect和ScrollView回弹问题的解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

unity scroll view无法滑动会回弹,unity,游戏引擎

你是否是这样?

unity scroll view无法滑动会回弹,unity,游戏引擎
Content高度 < 全部Cell加在一起的总高

他就认为你的全部Cell加起来就跟Content一样大,所以才出现了这种完全回弹

我该怎么办?

unity scroll view无法滑动会回弹,unity,游戏引擎
很简单,改变Content的长度跟所有Cell的和一样大

void RefreshSize()
    {
        float allDelta = 0;
        foreach (RectTransform rect in content)
        {
            allDelta += rect.sizeDelta.y;
        }
        allDelta += emptyDistance;
        content.sizeDelta = new Vector2(content.sizeDelta.x, allDelta);
    }

更简单一点的组件方式,挂到Layout组件上文章来源地址https://www.toymoban.com/news/detail-843351.html

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


[RequireComponent(typeof(RectTransform))]
public class ScrollViewContentSizeController : MonoBehaviour
{

    public enum LayoutType
    {
        Vertical,
        Horizontal,
        VerticalAndHorizontal
    }

    //结尾的空隙长度
    [SerializeField] float emptyDistance = 0.1f;

    [SerializeField] LayoutType layoutType = LayoutType.Vertical;


    RectTransform content;
    void Awake()
    {
        content = GetComponent<RectTransform>();
    }

    //自行决定是否Update调用
    void Update()
    {
        RefreshSize(layoutType);
    }



    public void RefreshSize(LayoutType layoutType)
    {
        switch (layoutType)
        {
            case LayoutType.Vertical:
                RefreshVerticalSize();
                break;
            case LayoutType.Horizontal:
                RefreshHorizontalSize();
                break;
            case LayoutType.VerticalAndHorizontal:
                RefreshVerticalSize();
                RefreshHorizontalSize();
                break;
        }

    }

    void RefreshVerticalSize()
    {
        float allDelta = 0;
        foreach (RectTransform rect in content)
        {
            allDelta += rect.sizeDelta.y;
        }
        allDelta += emptyDistance;
        content.sizeDelta = new Vector2(content.sizeDelta.x, allDelta);
    }

    void RefreshHorizontalSize()
    {
        float allDelta = 0;
        foreach (RectTransform rect in content)
        {
            allDelta += rect.sizeDelta.x;
        }
        allDelta += emptyDistance;
        content.sizeDelta = new Vector2(allDelta, content.sizeDelta.y);
    }
    void RefreshVerticalAndHorizontalSize()
    {
        float allDeltaX = 0;
        float allDeltaY = 0;
        foreach (RectTransform rect in content)
        {
            allDeltaX += rect.sizeDelta.x;
            allDeltaY += rect.sizeDelta.y;
        }
        allDeltaX += emptyDistance;
        allDeltaY += emptyDistance;
        content.sizeDelta = new Vector2(allDeltaX, allDeltaY);
    }
}

到了这里,关于Unity 3D ScrollRect和ScrollView回弹问题的解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【解决】FBX模型导入Unity3D贴图丢失问题

    1、选择“Materials” 2、Location选择“Use External Materials(Legacy)” 3、最后点击“Apply”  

    2024年02月15日
    浏览(35)
  • Unity UGUI的ScrollRect(滚动视图)组件的介绍及使用

    ScrollRect(滚动视图)是Unity UGUI中的一个常用组件,用于在UI界面中创建可滚动的区域。通过ScrollRect组件,可以实现在有限的空间内显示大量的内容,并且可以通过滑动手势来浏览内容。 ScrollRect组件通过将内容放置在一个可滚动的矩形区域内,然后通过拖动或滑动手势来改变

    2024年02月09日
    浏览(37)
  • 控制renderQueue解决NGUI与Unity3D物体渲染顺序问题

    NGUI与Unity3D物体渲染顺序问题,做过UI的各位应该都遇到过。主要指的是UI与Unity制作的特效、3D人物等一同显示时的层次问题。 由于UI与特效等都是以transparent方式渲染,而Unity与NGUI在管理同是透明物体的render queue时实际上互相没有感知,于是引出排序问题。现在介绍以render

    2024年02月13日
    浏览(39)
  • 解决Unity3D打包到PC端,UGUI的格式错乱问题

    Tips:在UI界面开始设计之前,一定先要设置好各项UI元素的参照位置,以及参考的屏幕分辨率比例,不然你精心设计好的UI界面在别人电脑上一看,直接堆在了一起或者根本显示不全,后面再改会很麻烦。 前言:本文主要分两部分,主讲第一部分。并不是第二部分不重要,而

    2024年02月07日
    浏览(40)
  • Unity学习笔记——ScrollView常用技巧

    在学习UI过程中反复接触ScrollView,遇到了很多使用问题,有许多技巧需要记录下来 如果不使用横向滑动,只需要将ScrollView中的Horizontal取消即可,虽然在Unity视图中还会存在,但运行游戏后就会消失;纵向滑动条同理 另外,如果你的Content的范围设置太小,也是不会显示滑动条

    2024年02月09日
    浏览(40)
  • unity scrollview滚动到指定的位置

    方法一:通过下标 方法二:原文1 原文2 方法一没测试 这里给方法二增加注释理解 图1 图2 图3 图4

    2024年01月20日
    浏览(31)
  • unity3d 通过Nav Mesh Agent组件实现敌人巡逻以及有关“SetDestination”报错问题解决

    首先展示效果: 在实现敌人自动巡逻这一块我们可以通过使用unity自带组件Nav Mesh Agent(导航网格代理),在省去冗杂的代码量的同时可便利的实现这一功能。 首先为敌人添加Nav Mesh Agent组件: https://docs.unity.cn/cn/2018.4/Manual/class-NavMeshAgent.html 以上是unity官方手册上关于该组件

    2024年02月01日
    浏览(69)
  • 【100个 Unity实用技能】☀️ | Unity UGUI ScrollView滑动到指定位置

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2024年02月12日
    浏览(26)
  • Unity ScrollView循环滚动播放(有详细注释)

    首先创建一个ScrollView在UI上 在Content上挂载脚本,将ScrollView赋值给Parent。 当Content的高度大于ScrollView的容量高度时便开始滚动。 以下是脚本代码: 效果如下(结尾和开头会停留1秒):

    2024年02月07日
    浏览(29)
  • 解决机械键盘进饮料回弹慢问题

    放假前键盘进了点饮料,当时还没什么感觉,放假回来后空格键回弹明显变慢,这个键盘是我舍友毕业送我的小礼物,还是希望不用更换(毕竟白嫖的😄)本博客记录使用酒精解决问题的过程 百度贴吧 首先拿一个尖东西把空格撬开(我试了一下,其他键位貌似撬不太开,可

    2024年02月11日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包