【问题标题】:Android: Changing Unity Scene from UI components outside the sceneAndroid:从场景外的 UI 组件更改 Unity 场景
【发布时间】:2019-10-30 05:58:57
【问题描述】:

我正在尝试构建一个使用 Unity 进行 UI 渲染的 Android 应用程序,用户可以从场景外执行一些操作。

这意味着假设我有一个活动,其中我有一个统一场景作为子视图。屏幕的其余部分由原生 android 视图(按钮等)组成。我想使用这些视图对统一场景进行更改,例如显示文本字段、添加文本、隐藏文本、添加文本效果等。

到目前为止,我已经按照answer 将统一场景添加为子视图,并且效果很好。我是 Unity 新手,我不确定如何从场景外的视图管理和更改场景。这甚至可能吗?我知道如果我在 Unity 中创建场景时向场景本身添加按钮,那么我可以使用这些按钮来改变场景。

但这是否可以通过不属于场景的 UI 组件实现?如果是,我该怎么做?我试图找到这方面的信息,但找不到太多。谢谢阅读。

【问题讨论】:

标签: android unity3d


【解决方案1】:
  • 在 Unity 端和 Android 之间建立通信器。 如果您统一执行以下功能,则可以在技术上做到这一点。我刚刚在这里写了 unity 和 android 是如何通信的 在使用此代码之前,您需要查看 Unity 与 Android 之间的集成简介以使用 Unity 的本机插件,因此请参阅此链接。

  • https://docs.unity3d.com/Manual/PluginsForAndroid.html

在你了解了如何为android制作插件之后,再看代码。它会帮助你。

  • 游戏对象名称:LoadGameSceneObject, loadScene.cs
    public class loadScene : MonoBehaviour
    {
        public static void LoadScene(string sceneName)
        {
            SceneManager.LoadScene(sceneName);
        }
    }


  • SceneLoadActivie.java
    public static void SendMessageToUnity(String gameObjectName, String methodName, String message) throws Exception
    {
        Log.d("unity", gameObjectName + " " + methodName + " " + message);
        final Class<?> player = Class.forName("com.unity3d.player.UnityPlayer");
        player.getMethod("UnitySendMessage", String.class, String.class,
                         String.class).invoke(null, gameObjectName, methodName, message);
    }

    ...
    // call this function.
    public void LoadScene()
    {
        SceneLoadActivie.SendMessageToUnity("LoadGameSceneObject", "LoadScene", "SomeScene");
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多