【问题标题】:How to add dynamically images onto a scroll view?如何将动态图像添加到滚动视图中?
【发布时间】:2017-12-25 02:33:47
【问题描述】:

我做了一个这样的滚动视图:

我制作了一个 128x128 像素的圆形图像,如下所示:

我想要的是添加一定高度的“随机”图像(128 的倍数),如下所示:

当它们很多时,它可能看起来像这样:

但是正如你所看到的,问题是它们被滚动条忽略了,不会改变。

我的层次结构是这样的:

视口对象是这样的:

而且内容是这样的:

我知道,如果您将图像添加为内容的属性,滚动条会考虑图像的实际属性。例如在这里,如果我将图像设置为很大的高度,滚动条会发生变化并且有效:

现在,如果我将图像添加到内容中 = 作为孩子,这将无济于事:

我应该怎么做才能让滚动条考虑所有属于内容子级的图像?

【问题讨论】:

  • 在 Unity 中有两种方法可以进行滚动视图。 1:通过脚本手动设置Content的高度。这将使滚动条相应地调整.. 2:将Content-Size-Fitter 添加到ContentVertical Layout Group.. 然后duplicatecontent 中的每个项目。这将导致滚动视图的内容大小根据其中的项目数量自动增长。第二种方式当然更难,也更不灵活,因为你不能按照你想要的方式“定位”项目。因此,如果您需要可定制性,请使用第一种方式。

标签: c# unity3d


【解决方案1】:

我这样做的方法是使用RectTransform.SetSizeWithCurrentAnchorscontent 的高度(和宽度,如果需要)修改为所需的值。

您的特定用例似乎很难达到所需的高度,但只要您有某种计算方法,只需调用该方法即可。这两个参数是所需的尺寸(在本例中为所需的高度)以及将该尺寸应用于哪个方向(在本例中为RectTransform.Axis.Vertical)。

您也许可以使用Content-Size-Fitter 来做到这一点,但我对它们的工作方式还不够熟悉,无法准确判断哪个更容易或如何使用此组件。

【讨论】:

  • 我已经尝试过Content-Size-Fitter,但正如布兰登在 cmets 中所说,您必须添加一个Vertical Layout Group 并提供一个硬编码的高度值,所以这不是一个可行的解决方案。我现在就试试你的。
  • 那行得通!!!!!!!!!!!!!!!好的,我检查您的答案是否有效,我只需要循环所有子组件,并获得“最大”高度值。
  • @OlivierPons 我认为这可能是您必须做的,但我不完全确定您的...系统是什么。不要忘记包括对象的高度大小(如果相关)。
  • 完成了。不是很明显(我不得不考虑 localScale)。但它现在可以工作了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多