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

3
我已将Unity集成到Android活动中(类似于this)。 现在,我需要根据用户输入动态加载场景。
我尝试复制Unity如何加载场景的方式,这是我所知道的Android活动与UnityPlayer通信的唯一方法,但显然不起作用。
UnityPlayer.UnitySendMessage("Application", "LoadLevel", "9");

我知道在Unity中有其他方式可以加载场景,但我不知道如何从Android本身调用它们(还要考虑到UnitySendMessage仅允许一个参数)。
1个回答

2
如果您计划从Android加载Unity活动,则应创建一个场景。将其称为主菜单,然后将其设置为通过构建设置加载的默认场景。使其索引为0。
这个空场景的目的是在调用附加到它的脚本时加载特定的场景。
在这个主菜单场景中,创建一个名为SceneLoader的GameObject,然后将以下脚本附加到其中:
public class SceneLoader : MonoBehaviour
{
    public void loadScene(string sceneIndex)
    {
        UnityEngine.SceneManagement.SceneManager.LoadScene(Convert.ToInt16(sceneIndex));
    }
}

在其他场景中,你还应该创建一个叫做 SceneLoader 的游戏对象,并将上述脚本附加到所有这些游戏对象上。

现在,加载Unity Activity会自动加载默认/空场景。由于它只有一个GameObject/SceneLoader,因此加载速度非常快。

你现在可以使用以下方式从Java中加载其他场景:

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

谢谢!我正在做类似的事情,但在一个关于Unity在Android上性能的线程中,他们说尽可能避免创建场景,因为这可能会使加载时间变得更糟。您知道像这样拥有一个简单的空场景是否会对Android的性能产生不利影响,还是没有什么影响? - RominaV
一个空场景并没有任何问题。因为只有一个简单的脚本附加在其中,而且该脚本不引用其他组件/预制件等,所以它不应该像你描述的那样影响加载性能。 - Programmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接