Unity3D: ScrollView 滾動至底部顯示

前言:
數據類型處理:
對於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;
            }
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章