Estoy tratando de crear una aplicación de Android que use Unity para la representación de la interfaz de usuario donde el usuario puede realizar algunas acciones desde fuera de la escena.

Lo que esto significa es que digamos que tengo una actividad en la que tengo una escena de unidad como subvista. El resto de la pantalla se compone de vistas nativas de Android (botones, etc.). Quiero usar estas vistas para realizar cambios en la escena de la unidad, como mostrar un campo de texto, agregar texto, ocultar texto, agregar efectos de texto, etc.

Hasta ahora he agregado la escena de la unidad como una subvista siguiendo esta respuesta y funciona bien. Soy nuevo en Unity y no estoy seguro de cómo puedo administrar y cambiar la escena desde las vistas fuera de la escena. ¿Es esto siquiera posible? Sé que si agrego botones a la escena en sí cuando creo la escena en Unity, entonces puedo usar esos botones para alterar la escena.

Pero, ¿es esto posible gracias a los componentes de la interfaz de usuario que no forman parte de la escena? Si es así, ¿cómo puedo hacer esto? Intenté encontrar información sobre esto, pero no pude encontrar mucha. Gracias por leer.

0
varunkr 30 oct. 2019 a las 08:58

1 respuesta

La mejor respuesta
  • Hacer comunicador entre el lado de Unity y Android. Es posible hacerlo técnicamente, si hace que lo siguiente funcione en la unidad. Acabo de escribir aquí cómo se comunican la unidad y Android antes de usar este código, debe ver un resumen de la integración entre Unity y Android para usar el complemento nativo de Unity, así que vea este enlace para hacerlo.

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

Una vez que comprenda cómo hacer un complemento para Android, consulte los códigos. Te ayudará.

  • Nombre de GameObject: 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");
    }
1
Brian Choi 2 nov. 2019 a las 04:42