上一篇:
[遊戲製作進度] [大型專案:BK MOD] ~EP.03~ 各種哩哩摳摳的功能陸續上菜嘍
https://hcyang1227.blogspot.com/2023/05/bk-mod-ep03.html
下一篇:
[遊戲製作進度] [大型專案:BK MOD] ~EP.05~ 好好地豐富遊戲基礎設定吧
https://hcyang1227.blogspot.com/2024/04/bk-mod-ep05.html
遊戲名稱:BK-MOD(V0.1.09)
遊戲類型:橫向卷軸動作遊戲
發表日期:2024/10/08
遊戲雛型下載點:
https://drive.google.com/file/d/1OamQtUduZo45rS_ZEUS6mhnlNRLknV8Z
為了畫面上好看以及兼具功能性,這次調了很多遊戲細節,以下會一一的作介紹(*´▽`*)
★HP條、KP條、PP條完成
要顯示角色的HP、KP等狀態,就需要一個長條來顯示,不過當時「拯救貪吃老人大作戰」因為視窗比較小,能夠塞的空間有限,所以HP條很短,看起來角色很短命(誤。自從玩過魔物獵人,看到那條長長的HP血條(接近螢幕寬度),讓小弟覺得血條要長一點,看起來比較爽。因此這次的遊戲也將HP上限從原本的999提高到9999,血條長到可以撞破螢幕(到底。
除了HP條、KP條改成細長狀的長條以外,PP條也是一個頭痛的地方。當時「拯救貪吃老人大作戰」也是用短短的條狀物件來顯示,但是畫面看起來頗擠,所以小弟當時還作了個伸縮平台,按一下按鍵拉出PP條,再按一下按鍵縮回PP條,很智障(。A。)。所以,這次用Unity裡面的功能,將招式改為順時鐘填充圖塊,這樣不但可以塞最多7個招式的PP值,還能清楚顯示目前PP值的數量跟比例,可說是一舉兩得。
★讀取進度條畫面完成
[1] 巴哈姆特 - 【Unity】Loading 畫面
https://home.gamer.com.tw/creationDetail.php?sn=3836196
略過踩坑的過程,最後敲板定案的程式碼如下,供各位做參考。程式碼不像上述巴哈姆特的那篇文章將StartCoroutine放在Start()裡面,而是在讀取完"Loading Scene"後才在Scene的Update()的第0.5秒執行StartCoroutine,是因為小弟發現不用後者的方式做的話,在測試時根本看不到讀取進度條,畫面一樣卡死5~10秒鐘才變到目標場景,體驗極差。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class Loading : MonoBehaviour { public Image LoadingImg; private bool callOnce = false; private float beforeLoadTm = 0.5f; void Update() { if (beforeLoadTm > 0f) beforeLoadTm -= Time.deltaTime; if (!callOnce && beforeLoadTm <= 0f) { callOnce = true; StartCoroutine(DisplayLoading(GlobalVariable.LOAD_SCENE_NUMBER)); } } private IEnumerator DisplayLoading(int screenNum) { float displayProgress = 0f; //Load BG AsyncOperation async = SceneManager.LoadSceneAsync(screenNum); async.allowSceneActivation = false; while (async.progress < 0.9f) { while (displayProgress < async.progress) { displayProgress += 0.01f; SetLoading(displayProgress); yield return new WaitForEndOfFrame(); } yield return new WaitForEndOfFrame(); } if (screenNum == 3) GlobalVariable.LOAD_SCENE_BGM_FADE = true; while (displayProgress < 1f) { displayProgress += 0.01f; SetLoading(displayProgress); yield return new WaitForEndOfFrame(); } async.allowSceneActivation = true; } private void SetLoading(float percent) { LoadingImg.fillAmount = percent; } |
其他的細節,比如說async.allowSceneActivation,原本聽ChatGPT的建議,以為這個用法造成畫面卡死,後來繞了一大圈排除掉上述的問題,才發現是沒問題的。async.progress執行上也確實是正確的,不能盲信ChatGPT的建議,不然小弟現在連這篇文章都打不出來了。
其他像是進度條Image的填充方式(由左至右),不會很難,就留給看官們自行測試嘍(ノ>ω<)ノ
★完成遊戲開頭設定畫面
★完成集氣的光影\粒子效果
★完成一半的基礎招式
沒有留言:
張貼留言