我怎么知道 Unity 中的用户界面被 c# 代码更改了



我正在通过 c# 代码在统一中实例化许多游戏对象......然后将滚动条值设为 0 以便滚动到最后一个对象...但是卷轴让我落在中间。因此,Unity 和 C# 代码之间存在延迟。因此,滚动条会在显示所有对象之前更改。

我怎么知道 Unity 中的用户界面已完全更改,我现在可以使用侦听器滚动到末尾,或者告诉我您现在可以进行滚动并且所有对象都在用户界面中准备就绪?

MakeMessages();
Scrollbar.value = 0;

在所有消息都出现在 Unity 中之前,滚动条值为 0,因此它将更改为 0.5。

您可以使用

Scrollbar.onValueChanged检测滚动条值更改。在 OnEnable 函数中注册事件,并在OnDisable函数中取消注册该事件。

public Scrollbar sb;
void OnEnable()
{
    //Register Scrollbar Event
    sb.onValueChanged.AddListener(scollBarChanged);
}
//Called when Scrollbar value changes
private void scollBarChanged(float value)
{
    Debug.Log("Input Changed");
}
void OnDisable()
{
    //Un-Register Scrollbar Event
    sb.onValueChanged.RemoveAllListeners();
}

最新更新