Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface Unity:如何计算移动具有已知值的内容所需的滚动条值?_User Interface_Unity3d_Scrollbar - Fatal编程技术网

User interface Unity:如何计算移动具有已知值的内容所需的滚动条值?

User interface Unity:如何计算移动具有已知值的内容所需的滚动条值?,user-interface,unity3d,scrollbar,User Interface,Unity3d,Scrollbar,我有一个动态的方法来增加内容大小,这取决于它的元素数量。 随着内容的增加,滚动条大小减小,按固定数字移动内容所需的滚动条值(例如,向右移动100)也会改变(减小)。 我能不能有一种方法,在不依赖滚动条大小和值的情况下,按固定的数字滚动内容(或者一个可以获得每次所需值的公式) 编辑: 我知道如何通过更改Scrollbar.Value(从0到1)来滚动。但是我需要滚动一个固定的数字(例如:100)而不是比率(0-1)Scrollbar只是一个控件,用户可以在那里滚动,它在场景后面操纵ScrollRe

我有一个动态的方法来增加内容大小,这取决于它的元素数量。 随着内容的增加,滚动条大小减小,按固定数字移动内容所需的滚动条值(例如,向右移动100)也会改变(减小)。 我能不能有一种方法,在不依赖滚动条大小和值的情况下,按固定的数字滚动内容(或者一个可以获得每次所需值的公式)

编辑:
我知道如何通过更改Scrollbar.Value(从0到1)来滚动。但是我需要滚动一个固定的数字(例如:100)而不是比率(0-1)

Scrollbar
只是一个控件,用户可以在那里滚动,它在场景后面操纵
ScrollRect.horizontalNormalizedPosition
ScrollRect.verticalNormalizedPosition

如果必须使用代码手动设置值,则不使用滚动条。直接处理scrollrect的规范化位置(范围为0-1)

通过计算
ScrollRect
的总大小,然后找到所需滚动值的比率,可以按比例更改此值。大概是这样的:

float totalWidth = // find total width of scroll rect transform.
float targetValue = 100;
float targetPercentage = targetValue/totalWidth;

scrollRect.horizontalNormalizedPosition = targetPercentage;
现在,如果您的
scrollrect
500
,并且您想要滚动到
100

您的目标百分比将为
100/500(=0.2f)


我希望你能找出剩下的。

可能的重复不是一回事。我知道如何通过更改Scrollbar.Value(从0到1)来滚动。但是我需要滚动一个固定的数字(例如:100)而不是比率(0-1)。谢谢你的回答。1-scrollRect.horizontalNormalizedPosition和scrollbar.value给出了相同的结果。2-您的解决方案正常工作,但有两个问题:*总宽度是内容的宽度,而不是滚动矩形,因为我正在更改内容的大小而不是滚动矩形/*目标百分比没有给我想要的值。3-当我尝试您的解决方案时,我通过改变内容转换的x位置(加或减100)找到了一个最简单的解决方案!如果您的目标是内容,那么您可以尝试计算内容矩形大小。正如我所说,scroll rect的标准化位置是最好的方法,因为它毕竟改变了场景后面内容的位置。唯一使解决方案无法完美工作的是比率。可能还有另一种方法来计算它。如果你的内容不是从ScReLeCt的顶部/左边开始,那么你也必须考虑偏移。如果我能看到您正在处理的实际UI设置,我可以提供更多帮助:)它位于中间,您应该切换到左上角