這似乎是從Unity 5就一直有的問題,
譬如:遊戲結束後要重新開啟場景,但燈光突然變暗。
並不是HoloLens專案特有的問題。
2018年7月2日 星期一
2018年6月29日 星期五
場景切換時等待個幾秒鐘才切換過去
這是書上普遍都會用的方法
我參考Loading new scene after time [連結] 的寫法
改成適合我的專案的code。
解釋一下:
事先寫了名為LoadLevelAfterDelay的IEmumerator。
要用的時候,使用StartCoroutine呼叫LoadLevelAfterDelay。
IEmumerator也可以寫一些參數進去,以下的例子是寫sceneName這個參數,決定要切換去哪個場景。
你也可以寫delay參數,決定要等待幾秒鐘。
參考資料 [連結1] [連結2]
我參考Loading new scene after time [連結] 的寫法
改成適合我的專案的code。
解釋一下:
事先寫了名為LoadLevelAfterDelay的IEmumerator。
要用的時候,使用StartCoroutine呼叫LoadLevelAfterDelay。
IEmumerator也可以寫一些參數進去,以下的例子是寫sceneName這個參數,決定要切換去哪個場景。
IEnumerator LoadSceneAfterDelay (string sceneName) { yield return new WaitForSeconds(0); SceneManager.LoadScene(sceneName, LoadSceneMode.Single); }
這個指令另外寫到其他function裡面
StartCoroutine(LoadSceneAfterDelay("BaseballMain"));
你也可以寫delay參數,決定要等待幾秒鐘。
IEnumerator LoadSceneAfterDelay (string sceneName, float delay) { yield return new WaitForSeconds(delay); SceneManager.LoadScene(sceneName, LoadSceneMode.Single); }
StartCoroutine(LoadSceneAfterDelay("BaseballMain",2));
2018年6月27日 星期三
場景切換後按鈕點擊一次變成兩次
我使用HoloToolkit提供的ButtonHolographic這個Button,
並且在裏頭寫了一些我希望Button做的事,
其中該具備的各項功能與參數都已經寫好並測試好。
豈知,在不同場景之間互相切換之後,卻碰出一個詭異到不行的問題。
問題是:明明對button做一次的click,可是他卻變成兩次click。
於是只好到處看論壇,找找看是否有人跟我遇到相同問題。
在GitHub論壇[連結],我找到了這篇貼文:InputManager causing UI events to fire twice
這個解法是被動式的解法,嚴格說並非求甚解而得,
但短期內還得仰仗HoloToolkit的prefab的前提下,這是最快而且可解決問題的作法。
並且在裏頭寫了一些我希望Button做的事,
其中該具備的各項功能與參數都已經寫好並測試好。
豈知,在不同場景之間互相切換之後,卻碰出一個詭異到不行的問題。
問題是:明明對button做一次的click,可是他卻變成兩次click。
於是只好到處看論壇,找找看是否有人跟我遇到相同問題。
在GitHub論壇[連結],我找到了這篇貼文:InputManager causing UI events to fire twice
這篇貼文與討論,高手如雲。
我最後是用以下這段程式碼解決的。
概念上是這樣的,一旦他偵測到兩個click之間的間隔時間太短,就不執行這個function。
所以第一個click抓到之後,第二個如果時間間隔太近,就離開function。
如此,就如同只發生一個click而已。
private float lastClickTime = 0; private float debounceDelay = 0.005f; public void OnInputClicked(InputClickedEventData eventData) { if(Time.time - lastClickTime < debounceDelay) { return; } lastClickTime = Time.time; // do stuff }
這個解法是被動式的解法,嚴格說並非求甚解而得,
但短期內還得仰仗HoloToolkit的prefab的前提下,這是最快而且可解決問題的作法。
2018年4月27日 星期五
[Unity] 如何切換場景?
場景(scene)是Unity開發環境中的一個基本單位,
一個結構完整的遊戲通常包含兩個或兩個以上場景,
例如:開始畫面、遊戲本身、結束或重玩畫面等。
那麼,我們該如何讓遊戲在多個場景間切換呢?
1. 首先,預備好您所需要的多個場景
此範例有三個場景,分別是startScene、gameScene、gameComplete
startScene 顯示的是一個立方體
gameScene 顯示的是「第二個scene」
gameComplete 顯示的是「第三個scene」
分別存檔
2. 把會用到的場景加入build settings,獲得編碼

按下File→Build settings會跳出上面視窗
選擇你要build的場景 [step①]
將你要build的scene拖曳進來 [step①]
或者按下Add Open Scenes按鈕 [step①]
勾選或取消勾選你所要使用的scene [step③]
每個scene最右邊會產生數字 [step②]
在這個例子裡
startScene 場景,專屬編碼顯示0
gameScene場景,專屬編碼顯示1
gameComplete 場景專屬編碼顯示2
選擇您想要建置的平台
只要點選並按下Switch Platform,就可以切換平台[step④⑤]
這個例子選擇在本機產生standalone的執行檔
完成設定後,點擊build,即可執行 [step⑥]
註:初始場景是編號為0的場景
3. 在你要切換場景的條件設定下,編寫程式碼

如上圖所示
切換場景所使用的是SceneManager.LoadScene(專屬編碼或場景名稱)這個指令 [step③]
在這個例子裡 SceneManager.LoadScene(1)
也可以寫成 SceneManager.LoadScene("gameScene")
→ 代表切換到1場景,也就是gameScene
這個指令的使用必須事先宣告 using UnityEngine.SceneManagement; [step①]
在這個例子裡,所設定的條件是,假如按下鍵盤上的N,就執行以下程序 [step②]
[註解] 以前版本的Unity,切換場景的指令是Application.LoadLevel( );
我所使用的Unity版本是2017.3.1f1 Personal (64bit) ,上述指令已不敷使用。
4. 測試結果
這個例子中,是用按下鍵盤按鍵N來切換場景。
從startScene切換到 gameScene,再切換到 gameComplete。
在Youtube裡面,還有一些關於切換場景的教學影片,
其中不乏場景切換的華麗特效,有興趣的可自行前往觀賞。
影片1:Simple Scene Transition for Unity [前往]
本文參考出處:羽毛的電玩新手村
一個結構完整的遊戲通常包含兩個或兩個以上場景,
例如:開始畫面、遊戲本身、結束或重玩畫面等。
那麼,我們該如何讓遊戲在多個場景間切換呢?
1. 首先,預備好您所需要的多個場景
此範例有三個場景,分別是startScene、gameScene、gameComplete
startScene 顯示的是一個立方體
gameScene 顯示的是「第二個scene」
gameComplete 顯示的是「第三個scene」
分別存檔
2. 把會用到的場景加入build settings,獲得編碼

按下File→Build settings會跳出上面視窗
選擇你要build的場景 [step①]
將你要build的scene拖曳進來 [step①]
或者按下Add Open Scenes按鈕 [step①]
勾選或取消勾選你所要使用的scene [step③]
每個scene最右邊會產生數字 [step②]
在這個例子裡
startScene 場景,專屬編碼顯示0
gameScene場景,專屬編碼顯示1
gameComplete 場景專屬編碼顯示2
選擇您想要建置的平台
只要點選並按下Switch Platform,就可以切換平台[step④⑤]
這個例子選擇在本機產生standalone的執行檔
完成設定後,點擊build,即可執行 [step⑥]
註:初始場景是編號為0的場景
3. 在你要切換場景的條件設定下,編寫程式碼

如上圖所示
切換場景所使用的是SceneManager.LoadScene(專屬編碼或場景名稱)這個指令 [step③]
在這個例子裡 SceneManager.LoadScene(1)
也可以寫成 SceneManager.LoadScene("gameScene")
→ 代表切換到1場景,也就是gameScene
這個指令的使用必須事先宣告 using UnityEngine.SceneManagement; [step①]
在這個例子裡,所設定的條件是,假如按下鍵盤上的N,就執行以下程序 [step②]
[註解] 以前版本的Unity,切換場景的指令是Application.LoadLevel( );
我所使用的Unity版本是2017.3.1f1 Personal (64bit) ,上述指令已不敷使用。
4. 測試結果
[* 觀賞Youtube影片內容時,請點擊字幕圖示]
這個例子中,是用按下鍵盤按鍵N來切換場景。
從startScene切換到 gameScene,再切換到 gameComplete。
在Youtube裡面,還有一些關於切換場景的教學影片,
其中不乏場景切換的華麗特效,有興趣的可自行前往觀賞。
影片1:Simple Scene Transition for Unity [前往]
本文參考出處:羽毛的電玩新手村
訂閱:
文章 (Atom)
