【发布时间】:2017-07-24 01:20:57
【问题描述】:
我只是想在每次创建新的文本对象时将我的滚动视图对象的滚动条的值设置为 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 并向滚动视图发送新消息时,我看到滚动条一直向下移动,然后很快向上移动,只是隐藏了新的文本对象。
【问题讨论】:
-
将 ScrollRect 的
elasticity更改为0然后执行ScrollbarVertical.value = 0;。这只是一个想法。不确定这是否会奏效。 -
不...我尝试使用所有 ScrollRect 选项进行调整,但似乎没有任何效果。 :(, 非常感谢再次帮助程序员
-
经过大量思考和解决不同的“修复”后,我想出了解决此问题的方法。再次感谢您的帮助:)
-
我正要告诉你试试this。继续并提出您的答案,因为这将对其他人有所帮助。不客气!