在Android中将Unity作为子视图时调用场景

问题描述:

我在Android活动(类似于this)中集成了Unity。 我现在需要根据用户输入动态加载场景。在Android中将Unity作为子视图时调用场景

我试着复制how Unity loads a scene,因为我知道一个Android的活动能够与UnityPlayer沟通的唯一途径,但显然是行不通的:

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

我知道有装载other ways Unity中的场景,但我不知道如何从Android本身调用这些场景(也考虑UnitySendMessage只允许一个参数)。

如果您计划从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