網頁

顯示具有 Unity-場景切換 標籤的文章。 顯示所有文章
顯示具有 Unity-場景切換 標籤的文章。 顯示所有文章

2018年7月2日 星期一

場景切換後燈光變暗

這似乎是從Unity 5就一直有的問題,
譬如:遊戲結束後要重新開啟場景,但燈光突然變暗。
並不是HoloLens專案特有的問題。

2018年6月29日 星期五

場景切換時等待個幾秒鐘才切換過去

這是書上普遍都會用的方法
我參考Loading new scene after time [連結] 的寫法
改成適合我的專案的code。

解釋一下:
事先寫了名為LoadLevelAfterDelay的IEmumerator
要用的時候,使用StartCoroutine呼叫LoadLevelAfterDelay。

IEmumerator也可以寫一些參數進去,以下的例子是寫sceneName這個參數,決定要切換去哪個場景。


  1. IEnumerator LoadSceneAfterDelay (string sceneName) { yield return new WaitForSeconds(0); SceneManager.LoadScene(sceneName, LoadSceneMode.Single); }
這個指令另外寫到其他function裡面
StartCoroutine(LoadSceneAfterDelay("BaseballMain"));


你也可以寫delay參數,決定要等待幾秒鐘。

  1. IEnumerator LoadSceneAfterDelay (string sceneName, float delay) { yield return new WaitForSeconds(delay); SceneManager.LoadScene(sceneName, LoadSceneMode.Single); }

  2. 這個指令另外寫到其他function裡面
StartCoroutine(LoadSceneAfterDelay("BaseballMain",2));


參考資料 [連結1]  [連結2]


2018年6月27日 星期三

場景切換後按鈕點擊一次變成兩次

我使用HoloToolkit提供的ButtonHolographic這個Button,
並且在裏頭寫了一些我希望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. 測試結果
   
                                                                    [* 觀賞Youtube影片內容時,請點擊字幕圖示]

      這個例子中,是用按下鍵盤按鍵N來切換場景。
      從startScene切換到 gameScene,再切換到 gameComplete。
 


在Youtube裡面,還有一些關於切換場景的教學影片,
其中不乏場景切換的華麗特效,有興趣的可自行前往觀賞。
影片1:Simple Scene Transition for Unity [前往]




本文參考出處:羽毛的電玩新手村