Unity 2D 将 Scrollbar 的值设置为 0

帕科·马托斯·特里格罗

每次创建新的文本对象时,我只想将我的滚动视图对象的滚动条的值设置为 0。这样,最新的对象将始终保留在底部而无需向下滚动(例如,想想视频游戏的聊天)。我的问题是,由于某种原因,程序将值设置为 0,然后创建文本对象,因此它将第二个最新的对象保留在滚动视图的底部。

我的代码:

//Creates the Text objects
private GameObject GenerateTextObject(string content)
{
    //Creates the Text objects
    GameObject messagePrefab = Instantiate(MessagePrefab);
    Text textComponent = messagePrefab.GetComponent<Text>();

    //Sets the content of the text and parent
    textComponent.text = content;
    messagePrefab.transform.SetParent(ContentPanel.transform, false);

    ScrollbarVertical.value = 0;

    return messagePrefab;
}

在代码中,我在函数末尾设置值,但在创建对象之前仍将滚动条的值设置为 0(将滚动视图正确移动到底部)。

https://gyazo.com/897982521f13d7792ec26540490a40c0在 Gyazo 图片中,您可以看到它没有一直向下滚动。

我曾尝试使用协程和 waitForEndFrame 以及 waitforseconds(1),但似乎都不起作用。

编辑:当加载 Unity 并向滚动视图发送新消息时,我看到滚动条一直向下移动,然后快速向上移动,只是稍微隐藏了新的文本对象。

冥王星

您可以做的是创建一个新的Scroll View并按照以下步骤操作:

在此处输入图片说明

结果是GenerateTextObject(Time.time.ToString());每秒调用一次。

private GameObject GenerateTextObject(string content)
{
    //Creates the Text objects
    GameObject messagePrefab = Instantiate(MessagePrefab);
    Text textComponent = messagePrefab.GetComponent<Text>();

    //Sets the content of the text and parent
    textComponent.text = content;
    messagePrefab.transform.SetParent(ContentPanel.transform, false); 

    //Force reset to the bottom on each message
    //ScrollbarVertical.value = 0;

    return messagePrefab;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章