在垂直滚动视图中动态填充可变数量的GUI预制件

时间:2017-07-12 12:31:34

标签: c# user-interface unity3d instantiation

我正在尝试设置一个可垂直滚动的视图,其中包含动态数量的预制面板(滚动浏览),每个预制面板包含动态填充的Text个对象。

为实现这一目标,我创建了ScrollRect,其内容是一个面板(让我们称之为contentPanel),其中包含可变数量的预制件。这个面板有一个垂直Grid Layout Group,以保持正确排列。

当我复制预制件时,我可以按预期滚动复制件。但是,当我以编程方式实例化新预制件并将父设置为contentPanel时,所有可滚动内容都会消失。

以下是我实例化预制件的代码:

    GameObject newAddedPanel = (GameObject) Instantiate(addedPanel);
    newAddedPanel.transform.SetParent(contentPanel.transform);
    if(newAddedPanel != null)
    {
        prefabScript script = newAddedPanel.GetComponent<prefabScript>();
        if(script != null)
        {
            script.populatePanel("text1", "text2");
        }
    }

此处addedPanel是对预制件的引用,prefabScript是预制件附加到其上的脚本,populatePanel()是脚本的方法之一。

根据我在this link阅读的内容,我不需要做任何进一步的事情来处理预制件&#39;职位

  

如果UI元素是布局组的子元素,它将自动定位并且可以跳过定位步骤

我必须采取另一个步骤让事情发挥作用吗?

谢谢!

更新

添加可滚动窗口的屏幕截图:enter image description here

包含值为&#34; val11&#34;,&#34; vall12&#34;的文本框的面板是第一个预制件,下面是第二个预制件,等等。我在检查员中放了4个,以确认滚动是否有效。

在上面的输入字段中输入新值并且&#34;添加&#34;按下按钮,实例化新的预制件,并将其父级设置为与其他预制件相同的父级。但是,滚动时不会显示新的预制件。

希望能让事情更加清晰!

0 个答案:

没有答案