2016-12-05 65 views
1

我在Android活動(類似於this)中集成了Unity。 我現在需要根據用戶輸入動態加載場景。在Android中將Unity作爲子視圖時調用場景

我試着複製how Unity loads a scene,因爲我知道一個Android的活動能夠與UnityPlayer溝通的唯一途徑,但顯然是行不通的:

UnityPlayer.UnitySendMessage("Application", "LoadLevel", "9"); 

我知道有裝載other ways Unity中的場景,但我不知道如何從Android本身調用這些場景(也考慮UnitySendMessage只允許一個參數)。

回答

0

如果您計劃從Android加載Unity活動,您應該創建一個空的場景。將其稱爲主菜單,然後使其成爲通過構建設置加載的默認場景。使其索引爲0.

此空白場景的目標是在調用附加腳本時加載特定場景。

在這種主菜單場景,創建一個遊戲物體稱爲SceneLoader然後在下方附上它的腳本:

public class SceneLoader : MonoBehaviour 
{ 
    public void loadScene(string sceneIndex) 
    { 
     UnityEngine.SceneManagement.SceneManager.LoadScene(Convert.ToInt16(sceneIndex)); 
    } 
} 

您還應該創建一個遊戲物體稱爲SceneLoader在所有其他的場景,並附上面的腳本給所有人。

現在,加載自動加載默認/空場景的Unity活動。由於其中只有一個GameObject/SceneLoader,因此加載速度非常快。

您現在可以從Java加載其他的場景:

UnityPlayer.UnitySendMessage("SceneLoader", "loadScene", "9"); 
+0

謝謝!我正在做類似的事情,但是在關於Android的Unity性能的主題中,他們說盡量避免創建場景,因爲它可能會使加載時間更加糟糕。你知道如果有這樣簡單,空洞的場景會對Android的性能產生不利影響嗎? – RominaV

+0

一個空的場景絕對沒有錯。這應該不會影響加載性能的方式,因爲只有一個簡單的腳本附加到腳本上,並且腳本不引用其他組件/預製等。 – Programmer