java - 从 Android 插件调用 Unity 中的场景

标签 java android vuforia unity-game-engine

我有一个 Unity 应用程序,它是通过应用程序链接从另一个 Android 应用程序调用的。因此,我为 Unity 创建了 Android 插件来处理通过 url 发送到应用程序的参数。根据 url 中的数据,我想加载 Unity 应用程序中定义的三个场景之一。我试图从场景 no2 调用游戏对象,但出现错误:未找到对象且场景 no0 已加载。

这是从 Android 插件到 Unity 的调用:

UnityPlayer.UnitySendMessage("ARCamera", "startScene", "some data");

看起来 Unity 正在场景 0 号中寻找 ARCamera,当然它不在那里。 是否可以调用build设置中未定义为起始(0)的场景?怎么办?

编辑:

在安卓中:

public void startAppP() {
        Log.v(TAG, "starting p");
        UnityPlayer.UnitySendMessage("ARCameraP", "loadScene", "sceneP");
    }

在 Unity 中(场景定义为 no3),附加在名为 ARCameraP 的对象上的脚本中:

public void loadScene(string sceneName)
{
    UnityEngine.Debug.Log("HI");
    Application.LoadLevel(sceneName);
}

它不断返回SendMessage:未找到对象ARCameraP!

我正在使用旧版本的 Unity,因为我在使用 Vuforia 时遇到了一些问题。相机一直显示黑屏,直到我将 Unity 降级到版本 5.1.2。

最佳答案

您可以通过将 0 传递给 SceneManager.LoadScene(0); 来加载默认场景,但您不能使用该字符串方法 SceneManager.LoadScene("defaultScene"); 的重载版本,直到您在build设置中添加场景。

C# 代码:

public void loadScene(string sceneName)
{
    SceneManager.LoadScene(sceneName);
}

Java代码:

UnityPlayer.UnitySendMessage("NameOfGameObject", "loadScene", "sceneName");

确保场景名称已添加到build设置中。如果不是,则使用 SceneManager.LoadScene(0);

关于java - 从 Android 插件调用 Unity 中的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822982/

相关文章:

java - 更改对对象的引用会导致先前的对象数据被覆盖

android - 使用广播接收器在 Android 中启动 AlarmManager?

ios - 如何将 Vuforia 应用程序作为模拟器版本提交给 Facebook 审核?

android - Vuforia Videoplayback 翻转和镜像视频

c# - 如何在 Vuforia 中使用 Unity 脚本

java - 开箱即用的简单登录/身份验证?

java - 如果我有一个 Runnable 和一个实现线程的对象,我该如何使用 wait() 和 notification() ?

android - 如何旋转android微调器下拉窗口

java - 使用 Java 仅迭代一个 xml 标签

java - JVM内存中存放的是Java.class文件