【问题标题】:Invoking scene when loading Unity as subview in Android在 Android 中将 Unity 作为子视图加载时调用场景
【发布时间】:2016-12-06 04:23:32
【问题描述】:

我已将 Unity 集成到 Android 活动中(类似于 this)。 我现在需要根据用户输入动态加载场景。

我已经尝试复制how Unity loads a scene,这是我知道 Android Activity 能够与 UnityPlayer 通信的唯一方式,但显然不起作用:

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

我知道有 other ways 在 Unity 中加载场景,但我不知道如何从 Android 本身调用它们(还要考虑 UnitySendMessage 只允许一个参数)。

【问题讨论】:

    标签: android unity3d


    【解决方案1】:

    如果您打算从 Android 加载 Unity 活动,您应该创建一个 场景。将此称为主菜单,然后将其设置为通过构建设置加载的默认场景。使其索引为 0。

    这个空场景的目标是在调用附加到它的脚本时加载特定的场景。

    在这个 Main Menu 场景中,创建一个名为 SceneLoader 的游戏对象,然后将下面的脚本附加到它:

    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");
    

    【讨论】:

    • 谢谢!我正在做类似的事情,但是在一个关于 Android 中 Unity 性能的线程中,他们说了一些关于尽可能避免创建场景的内容,因为这可能会使加载时间变得更糟。你知道这样一个简单、空旷的场景是否会损害 Android 的性能?
    • 一个空的场景绝对没有错。这应该不会影响您描述的加载性能,因为它只附加了一个简单的脚本,并且该脚本不引用其他组件/预制件等。
    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多