Unity3d 切換場景過度動畫

2021-08-13 19:42:49 字數 2268 閱讀 8799

第一步當載入完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

<

toprogress)op

.allowsceneactivation

=true

;}

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

對比第一種的進度條

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

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

unity3d官方論壇.using allowsceneactivation

Unity3D 場景切換 場景間資訊傳遞

要解決的問題0 從主場景a轉到場景b,再回到主場景a,如何使回到a時的a中的各個例項物體的狀態保持為轉到b之前的狀態?resourcefrom jason 我在用unity3d做乙個回合制的戰鬥遊戲,有兩個場景 小鎮的場景和戰鬥的場景 每當角色遇到怪獸,遊戲就切換到戰鬥場景,角色就在這裡戰鬥,直到打...

Unity3D教程 無縫地形場景切換的解決方法

當我們開發乙個大型專案的時候 會遇到這樣的問題 地形場景的切換 這個只是字面意思 並不是重場景1的100 100 100座標一下切換到場景2的100 100 100座標這樣的方法 如果您以為是這樣的技術和 那就不用看了。這個技術的實質意義是為了解決 多地形場景帶來的大量記憶體占用問題 舉個我的例子 ...

Unity3D 動作動畫忽略timeScale

下面分別是animation animator和粒子特效的ignoretimescale方法。animationstate animstate animation clipname 當前動畫狀態 curtime time.realtimes artup 當前真實時間 deltatime curtim...