Scripting a Loading screen in Unity(註:影片連結請注意音量)
以上連結教學就是這次的方法,要做到的效果如下圖:
在按下開始的時候,程式並不會因為去讀取資源而完全停止,而是一邊顯示讀取進度一邊讀取資源,讀取完成後進入遊戲。
以下開始正文:
首先製作Loading過場畫面,只要能清楚表達讀取進度用什麼物件都可以,這裡使用UI->Panel當作背景,底下加上三個UI物件作為進度的顯示。
布局完後確定可以在讀取過程中蓋住遊戲畫面後,就可以把過場畫面關閉或縮小。
接著在場景中新增名為ButtonClick的空物件,並在ButtonClick物件上新增腳本ButtonClick.cs,在這腳本上需要以下的內容。首先新增按下時要執行的函式:
public void StartClick(GameObject loadScreen) { loadScreen.transform.localScale = new Vector3 (1, 1, 1);////(1) StartCoroutine (DisplayLoadingScreen("GameScene"));////(2) }(1)將過場畫面展開。
(2)這裡做場景讀取使用StartCoroutine函式,巴哈有比較詳細的介紹:Unity3D製作計數器「StartCoroutine應用」。
大略講一下內容就是:當程式遇到StartCoroutine時會執行IEnumerator介面內的程式,遇到yield return 0;會執行StartCoroutine之後的部分,接著回StartCoroutine的執行內容,直到沒遇到yield return 0;為止。
然後是自定義DisplayLoadingScreen的內容:
public Text loadText; public Image loadImage; IEnumerator DisplayLoadingScreen (string sceneName)////(1) { AsyncOperation async = Application.LoadLevelAsync (sceneName);////(2) while (!async.isDone)////(3) { loadText.text = (async.progress * 100).ToString() + "%";////(4) loadImage.transform.localScale = new Vector2(async.progress,loadImage.transform.localScale.y); yield return null; } }(1)就如上面所提的DisplayLoadingScreen為IEnumerator函式。
(2)LoadLevelAsync和LoadLevel不同,可以讓資源讀取這件事在程式後台來做,不會造成程式讀取資源而停止其他度做的問題。
(3)LoadLevelAsync讀取的過程中可以透過isDone來確認是否完成,所以如果還是未完成讀取狀態,就要做讀取進度的顯示。
(4)progress為讀取進度,介於0到1之間,將progress的數值帶入loadText和loadImage,也就是畫面上顯示的百分比和進度條。
最後將ButtonClick物件帶入開始按鈕的On Click下,詳細的作法點這裡,這裡就不多提。
以上就是讀取過場的製作,方法不會太複雜,但讀取場景卡畫面的問題可以輕鬆解決,這次就到這裡。
以下是素材:
臼井の会:http://usui.moo.jp/frame2.html
ぴぽや:http://piposozai.blog76.fc2.com/
CLOSET:https://sites.google.com/site/closetvx/
異教徒たちの踊り:http://blog.goo.ne.jp/ari1192jp_001
ひみつ ゲーム用フリー素材:http://uros.web.fc2.com/
音楽素材/魔王魂:http://maoudamashii.jokersounds.com/
Cool Text: 图标和图形生成器:http://zh-cn.cooltext.com/
【Rド】:http://www.geocities.co.jp/Milano-Cat/3319/
CLOSET:http://eurs.blog65.fc2.com/blog-category-0.html
ドット絵世界:http://yms.main.jp/index.html
Game Studio Rxus.:http://rxus.digiweb.jp/mate/h003.html
ヴィントドルフ:http://winddorf.oops.jp/1top.htm
感謝分享!
回覆刪除謝謝你~剛好在找讀條的概念!
回覆刪除