Unity+C#学习笔记-Scroll相关
2021/7/26 22:08:14
本文主要是介绍Unity+C#学习笔记-Scroll相关,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- Scrollbar
- ScrollRect
- 源码
- 参考
前言:实习的时候遇到一个问题,就是我需要在页面刚加载的时候,滑动条处于最开始的位置,也就是value=0,但是奇怪的事情发生了,UGUI的值始终都不能变成0,就像这篇文章里的问题一样:【Unity】UGUI:为什么Scrollbar无法把初值设置为0,查了半天没有解决。
Scrollbar
我在自己的赋值为0的地方打上断点调试,发现value值一开始的确变成0,后面自动变成了1,百思不得其解,就去请教了前辈同事。
viewModel.ScrollbarScrollbar.value = 0;
事实证明,你前辈就是你前辈,他找到了源码,找到了自动变成1的原因,那个滑动条没有加载完成之前有一个地方判断的,巴拉巴拉我忘记了,等会找一下源码看看。
下面是解决办法。
ScrollRect
在我的代码里面初始化成这样就好了:
viewModel.ModeContentScrollRect.normalizedPosition = Vector2.zero;
下面是官网资料的例子:
using UnityEngine; using System.Collections; using UnityEngine.UI; // Required when Using UI elements. public class ExampleClass : MonoBehaviour { public ScrollRect myScrollRect; public Vector2 myPosition = new Vector2(0.5f, 0.5f); public void Start() { //Change the current scroll position. myScrollRect.normalizedPosition = myPosition; } }
源码
UGUI的源码
Unity相关的源码
找到ScrollbarEditor.cs,对上了就可以假装自己看懂了
上面的是界面的内容看起来,我找错了
看到导入的包UnityEngine.UI,应该是Scrollbar.cs这个文件,这里是涉及value返回值和numberOfSteps的关系,numberOfSteps为0或者1的时候是原值,其他的会经过计算。
Scrollrect.cs文件里
我的unity里面就是水平的滑动轴
刷新会有这样一个计算过程,那个黄色和蓝色的框框有一个简单的例子,就是在内容大于视图的时候,初始相对位置来计算value。但是view大于content的时候,就是红色框框的计算,可能是我value赋值的位置太早了,因为我的content宽度是动态变化的,所以还没有来得及初始化,就会这样先0后1
参考
这个是官方文档
https://docs.unity3d.com/2018.1/Documentation/ScriptReference/UI.ScrollRect-normalizedPosition.html
这个大佬的知乎文章很值得看看,有 一系列关于UGUI源码的解读
https://zhuanlan.zhihu.com/p/340598873
https://zhuanlan.zhihu.com/p/340598576
这篇关于Unity+C#学习笔记-Scroll相关的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID