Android:从场景外的UI组件更改Unity场景

时间:2019-10-30 05:58:57

标签: android unity3d

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

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

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

但是,不是场景一部分的UI组件可以做到这一点吗?如果是,我该怎么做?我试图找到有关此信息,但找不到太多。谢谢阅读。

1 个答案:

答案 0 :(得分:1)

  • 在Unity端和Android之间进行沟通。 如果您统一执行以下功能,则可以从技术上做到这一点。我刚刚在这里写了团结与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");
    }