Unity製作異步加載進度條

在Unity中,如果使用NGUI的UISlider來做讀取場景(或者其他需要一段時間才能完成的事務)的進度條
必須使用次線程調用/刷新
否則到進度條完全完成前,並不會刷新(即一直停留在0%,直至突然跳到100%)
------------------------------------------------------------------------------------

思路
1. 在綁定的腳本內, 添加一個NGUI的UISlider,以及必要的(float)current, total 記錄進度;

2. 在主線程中使用次線程調用方法LoadFoo()讀取內容

3. 主線程的void Update() 可以正常刷新UISlider.sliderValue = current / total;
------------------------------------------------------------------------------------

實現

1. 添加一個UISlider, 以及float total, current等內容,以在Update中修改UISlider.sliderValue
(這部分具體實現不再贅述)

2. 在代碼中, 將讀取進度條的方法LoadFoo()的返回類型改爲IEnumerator

3. 在LoadFoo內,每個需要通知刷新UI的地方, 添加一行: yield return 0
即告訴Unity這裏暫時有個空檔,通常是在每次foreach任務完成的最後. 此外在完成後也要yield一次.

4. 在原本調用LoadFoo()的地方, 改爲使用次線程調用: StartCoroutine(LoadFoo());

注: Unity目前不支持使用 Thread開啓多線程, 必須使用StartCoroutine
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章