带有多个按钮的Unity ScrollView

时间:2018-08-07 12:08:11

标签: c# list unity3d button scrollview

我正在开发游戏,现在已经达到需要动态创建按钮列表的阶段。

我的方法是创建一个滚动视图,然后通过脚本添加按钮。

我已经创建了按钮预制件。此按钮的目的是在应用程序外部打开特定的链接,因此我创建了带有两个文本组件的按钮预制件:一个说“ Show Path”(这是我希望按钮显示的内容),另一个文本组件是“我需要打开的链接,用户看不到。

我遇到了几个问题:

  1. 在浏览用户数据列表时,我需要创建按钮。我在另一个滚动视图中正确地在按钮旁边显示了数据。但是,仅创建一个按钮。
  2. 我无法访问预制的链接文本组件,将其更改为我需要打开的链接。

谢谢您的时间!

1 个答案:

答案 0 :(得分:0)

我建议您做的是创建自己的类来处理此问题,因此在检查器中更容易可视化。

[System.Serializable]
public class RelevantClassName
{
    public string link = "http://defaultbackuplink";
    public string text = "Default content";

    [Space]

    public Transform button;
    public Transform contentHolder;
}

在单独的类中,您将使用此信息来生成滚动视图和按钮:

public class UIController : MonoBehaviour
{
    public List<RelevantClassName> contentToDisplay;

    [Header("References"]
    public Transform buttonParent;
    public Transform contentParent;

    public GameObject buttonPrefab;
    public GameObject contentPrefab;

    public void DisplayUI()
    {
        foreach(RelevantClassName content in contentToDisplay)
        {
            content.contentHolder = Instantiate(contentPrefab, contentParent);
            content.button = Instantiate(buttonPrefab, buttonParent);

            // And here you can run any custom changes, for example finding a text
            // component on the content holder and changing the description:
            content.contentHolder.GetComponent<Text>().text = content.text;
        }
    }

自然,我强烈建议您使用池化系统,如果您打算访问组件,则将其缓存在该类中。

希望这会有所帮助!