前言:
數據類型處理:
對於UI的刷新,一般是先
請求數據–> 返回數據(加載) –> 顯示UI (刷新)。(很重要!!!)
這樣處理一般不會影響結果,但有時,你可能在無意識情況下會進行:請求數據與 刷新並存的執行(請求數據後,立即刷新UI),這樣顯示的結果會有異常(或與期待效果不符),因爲UI 請求數據可能還沒有返回,UI還來不及刷新。
對於 ScrollView 組件,在對其進行列表數據加載時,讀取數據(請求)–>加載數據–>UI顯示 (刷新數據)
例如:
public Text lab_title;
private void onLoadData(){
for(int i=0; i< Count; i++){
lab_title.text = "測試" + i;
}
// 切記:如果加載完 馬上設置滾動值,是不能實現 置底顯示的
// bar.value = 0;
onSkipToBottomShow(); // 加載完後,刷新UI 跳轉底部顯示
}
類似 聊天窗口,消息總是置底部顯示 (即最新消息顯示在最底部)
// 平滑實現:
// 消息跳轉至底部顯示
private void onSkipToBottomShow()
{
//bar.value = 0; // --- 不能實現 置底顯示
DOTween.To(() => bar.value = 0, v => bar.value = v, 0, 0.1f).SetEase(Ease.InElastic); // 稍微有點時間延遲
}
// 這裏用了 DoTween插件實現
還有另外一種方法是,對UI進行實時監聽
bool isRefresh = false;
// Update is called once per frame
private void Update()
{
if(Time.frameCount % 6 == 0)
{
if (isRefresh)
{
bar.value = 0;
isRefresh = false;
}
}
}