Unity3d中製作非同步Loading進度條

2021-06-25 13:49:25 字數 2266 閱讀 3837

第一步當載入完loading場景後,呼叫如下的loadgame函式開始載入遊戲場景,使用非同步載入的方式載入場景1(loading場景為0,主場景為1),通過unity提供的coroutine機制,我們可以方便的在每一幀結束後呼叫setloadingpercentage函式來更新介面中顯示的進度條的數值。

public

void

loadgame

()private

ienumerator

startloading_1

(int

scene

)}

最後進度條的效果顯示如下:

為了讓進度條能顯示100%,取巧一點的辦法是將asyncoperation.progress的值乘上2,這樣當載入到50%的時候介面上就顯示100%了。缺點是當介面上顯示100%的時候,使用者還要等待一段時間才會進入遊戲。其實unity提供了手動切換場景的方法,把asyncoperation.allowsceneactivation設為false就可以禁止unity載入完畢後自動切換場景,修改後的startloading_2**如下:

// this function is not work

private

ienumerator

startloading_2

(int scene)op.

allowsceneactivation

=true

;}

我們首先將asyncoperation.allowsceneactivation設為false,當載入完成後再設為true。**看上去沒有錯,但是執行的結果是進度條最後會一直停留在90%上,場景不會切換。通過列印log發現asyncoperation.isdone一直為falseasyncoperation.progress的值增加到0.9後就保持不變了,也就是說場景永遠不會被載入完畢。

在這個帖子中找到了答案,原來把allowsceneactivation設定為false後,unity就只會載入場景到90%,剩下的10%要等到allowsceneactivation設定為true後才載入,這不得不說是乙個坑。所以**改為如下。當asyncoperation.progress到達0.9後,就直接把進度條的數值更新為100%,然後設定asyncoperation.allowsceneactivationture,讓unity繼續載入未完成的場景。

private

ienumerator

startloading_3

(int scene)

setloadingpercentage

(100

);yield

return

newwaitforendofframe

();op

.allowsceneactivation

=true;}

最後的效果如下:

private

ienumerator

startloading_4

(int scene)

}toprogress

=100

;while

(displayprogress

< span>toprogress)op

.allowsceneactivation

=true;}

displayprogress用來記錄要顯示在進度條上的數值,最後進度條的動畫如下:

對比第一種的進度條

如果在載入遊戲主場景之前還需要解析資料**,生成物件池,進行網路連線等操作,那麼可以給這些操作賦予乙個權值,利用這些權值就可以計算載入的進度了。如果你的場景載入速度非常快,那麼可以使用乙個假的進度條,讓玩家看上幾秒鐘的loading動畫,然後再載入場景。總之進度條雖然小,但要做好也是不容易的。

阿高.unity 顯示loading(載入)進度 對於網上流行的方法進行更正

unity3d官方論壇.using allowsceneactivation

Unity3D模型製作規範

unity3d模型製作規範 一.單位,比例統一 在建模型前先設定好單位,在同一場景中會用到的模型的單位設定必須一樣,模型與模型之間的比例要正確,和程式的匯入單位一致,即便到程式需要縮放也可以統一調整縮放比例。統一單位為公尺。二.模型規範 所有角色模型最好站立在原點。沒有特定要求下,必須以物體物件中心...

unity3d模型製作規範

1.單位,比例統一 在建模型前先設定好單位,在同一場景中會用到的模型的單位設定必須一樣,模型與模型之間的比例要正確,和程式的匯入單位一致,即便到程式需要縮放也可以統一調整縮放比例。統一單位為公尺。2.模型規範 所有角色模型最好站立在原點。沒有特定要求下,必須以物體物件中心為軸心。面數的控制。移動裝置...

Unity3D模型製作規範 參考

一.單位,比例統一 在建模型前先設定好單位,在同一場景中會用到的模型的單位設定必須一樣,模型與模型之間的比例要正確,和程式的匯入單位一致,即便到程式需要縮放也可以統一調整縮放比例。統一單位為公尺。二.模型規範 所有角色模型最好站立在原點。沒有特定要求下,必須以物體物件中心為軸心。面數的控制。移動裝置...