Tabla de contenidos

Parte 2:. Terminando el Diálogo controlador, utilizando scripts Objetos para contener los datos de diálogo, y configurar la funcionalidad de la cámara

Esta es la segunda parte de la serie de tutoriales en los que el uso del sistema objeto de la Unidad de guión para construir un proyecto de pizzería. Por favor asegúrese de que ha completado la primera parte de esta serie de tutoriales para asegurarse de que usted es capaz de seguir a lo largo de manera efectiva y continuar construyendo el proyecto con la segunda parte. El enlace a la primera parte del tutorial está aquí.

Fuente archivos de código

Puede descargar los archivos de código fuente tutorial aquí. Todos los archivos de proyecto se encuentran en la carpeta principal. La carpeta contiene archivos activos intermedios adicionales que se utilizaron durante el proceso de creación de los sprites del juego.
No se pierda! extremos de la oferta en

  • Accede a los más de 200 cursos
  • Nuevos cursos añadió mensual
  • Cancelar en cualquier momento
  • Los certificados de terminación

    ACCESO ahora

    Diálogo Cliente Unidos

    Abra el proyecto de pizzería y navegue a la carpeta de objetos de secuencias de comandos en el proyecto. Crear un nuevo guión y el nombre de “CustomerDialogueSO.” Abra la secuencia de comandos en Visual Studio.

    Recuerde que Scriptable Los objetos no están asociadas a ningún objeto en la escena del juego. Objetos de secuencias de comandos no se heredan de Monobehaviour, que heredan de ScriptableObject. Lo primero que hay que hacer con este script es cambiar “Monobehavior” a ScriptableObject, justo después de los dos puntos. Suprimir las funciones de inicio y de actualización, estos no son necesarios en este script.

    Crea una variable de cadena y el nombre de “CustomerGreeting.” Esto tiene que ser serializado, de modo que sea visible en el inspector.

    Ahora, con el fin de que seamos capaces de crear un objeto de secuencias de comandos y añadirlo al proyecto tenemos que añadir una línea más a este script. Por encima de la declaración de la clase “CustomerDialogueSO: ScriptableObject” debe añadir esta línea: “[CreateAssetMenu (MenuName =‘CustomerDialogueSO’)]”

    Esta línea asegura que podemos añadir un ScriptableObject al proyecto a través del editor de Unity.
    [CreateAssetMenu (MenuName = «CustomerDialogueSO»)] [SerializeField] customerGreeting cadena; 1234 [CreateAssetMenu (MenuName = «CustomerDialogueSO»)] [SerializeField] stringcustomerGreeting;

    Guardar el guión y volver al editor de Unity, ahora se puede Derecha Haga clic en la carpeta Objetos de secuencias de comandos y crear> CustomerDialogueSO. Esto agregará un archivo .asset a esta carpeta.


    Nombre este nuevo objeto de guión “EmployeeGreetsCustomer”


    tenemos que añadir otro atributo de la secuencia de comandos CustomerDialogueSO. Abra la copia de seguridad de script en Visual Studio y por debajo del atributo SerializeField tenemos que añadir un atributo TextArea para que el campo al lado de felicitación del cliente es lo suficientemente grande como para que podamos ver de manera efectiva para la facilidad de escribir directamente en el editor de Unity. El atributo de área de texto puede ser 8,8.
    [TextArea (8,8)]

    Usted verá que el campo de entrada de texto se hizo mucho más grande, y que no debería tener problemas para entrar o ver de lo que se ha escrito dentro de ese campo ahora.


    En el campo Saludo al cliente que se va a llenar este valor en medio del inspector con lo que la pizzería Empleado dirá al cliente cuando los reciben. Introduzca el saludo dentro del valor del inspector de “Bienvenido a la pizzería, ¿en qué puedo ayudarle?”

    Cómo nuestro cliente principio saludo instalación y funcionamiento

    Abrir el guión y CustomerDialogueSO crear una función pública y el nombre “GetCustDialogue.” Esta función necesita para devolver una cadena, esa cadena que va a devolver la cadena customerGreeting hemos creado anteriormente.
    public string GetCustDialgoue () {return customerGreeting; } 1234publicstringGetCustDialgoue () {returncustomerGreeting;}

    Esta función se necesita para ser tan pública que podemos acceder a él fuera del guión.

    En este mismo guión crear una variable que se CustomerDialogueSO serializado y el nombre que startCustomerGreet. Guardar la secuencia de comandos.

    Atrás Ahora navegar en el Editor de la Unidad y con el objeto de juego DialogueController seleccionado en la escena, mirada a la ventana de inspección y verá bajo la Operación Pizzaria (Script) componente del campo llamado “Start Cliente Greet” aquí es donde nos necesidad de arrastrar el objeto de secuencias de comandos que hemos creado antes llamados “EmployeeGreetsCustomer” a este campo.


    En este punto vamos a tener que saber qué parte de la interacción con el cliente / empleado que nos encontramos. Crear una variable llamada custEmployeeInteraction. Obtener referencia a partir de la secuencia de comandos CustomerDialogueSO.
    CustomerDialogueSO custEmployeeInteraction; 1CustomerDialogueSO custEmployeeInteraction;

    Lo que se hace aquí está derivando de la clase que hemos creado antes llamados CustomerDialogueSO.

    En la función de arranque que necesitamos para establecer el custEmployeeInteraction a startCustomerGreet.
    custEmployeeInteraction = startCustomerGreet; 1custEmployeeInteraction = startCustomerGreet;

    A principios nos ayudara el startCustomerGreet porque arrastramos el activo objeto de secuencias de comandos que hemos creado antes en el campo en el Editor de la Unidad. Ese objeto de secuencias de comandos tenía todos los clientes a partir de información saludo ya en ella.

    Tenemos que ahora llamar a la función pública que hemos creado antes del guión CustomerDialogueSO. Era la función pública denominada GetCustDialgoue ().

    Podemos hacer esto en lo que originalmente se había puesto la cadena “marcador de posición” y reemplazar que con custEmployeeInteraction.GetCustDialgoue ();

    La función de arranque en el guión PizzaOperation ahora debería tener este aspecto:
    // Usar esto para la inicialización de inicio void () {custEmployeeInteraction = startCustomerGreet; txtComponent.text = custEmployeeInteraction.GetCustDialgoue (); } // 123456 Uso esto para initializationvoidStart () {custEmployeeInteraction = startCustomerGreet; txtComponent.text = custEmployeeInteraction.GetCustDialgoue ();}

    Guardar la secuencia de comandos, de vuelta a navegar el Editor de Unidad y pulsar el botón Reproducir. La escena del juego ahora debería tener este aspecto:


    Vaya a la carpeta de secuencias de comandos de objetos en el Editor de la Unidad, es importante mantenemos el proyecto organizado. Crear una nueva carpeta con el nombre “EmployeeDialogueSO” vamos a mantener todo el diálogo de los empleados en esta carpeta. A continuación, crear otra carpeta nueva y el nombre de “CustDialogueSO.” Arrastre el EmployeeGreetsCustomerSO en la carpeta EmployeeDialogueSO. Guardar la escena y del proyecto.

    Con el fin de avanzar a través de los empleados de diálogo con el cliente que va a utilizar una matriz que está serializado y una función pública que devolverá una de las variables en la matriz creada.

    Abrir el guión y CustomerDialogueSO crear una matriz serializada del tipo “CustomerDialogueSO” y el nombre “nextDialogue.” Entonces tenemos que la función pública llamada “GetNextDialogue” que devolverá nextDialogue.
    [SerializeField] CustomerDialogueSO [] nextDialogue; CustomerDialogueSO pública [] GetNextDialogue () {return nextDialogue; } 1234567 [SerializeField] CustomerDialogueSO [] nextDialogue; publicCustomerDialogueSO [] GetNextDialogue () {returnnextDialogue;}

    Lo que tenemos aquí se crea una matriz CustomerDialogueSO llamado “nextDialogue” que se devuelve cuando vamos a llamar a la función GetNextDialogue a través de código. Guardar la parte posterior guión y navegar en el Editor de la Unidad.

    Haga clic en el archivo activo objeto “EmployeeGreetsCustomer” scripts. Mira el inspector y verá el siguiente diálogo valor de matriz que es ahora visible en el Inspector. Cuenta con una flecha desplegable junto a él y puede hacer clic esto. Vamos a añadir el resto de archivos de secuencias de comandos activos objeto de esta matriz aquí en el Inspector después de que les creamos.


    Debido a que, hicimos la matriz serializada podemos añadir los elementos directamente a ella desde la ventana de inspección simplemente arrastrando y soltándolos en la matriz que es visible en el Inspector. Esta es una de las bellezas de usar el atributo SerializeField dentro de la unidad.

    El campo de valor tamaño en realidad será el tamaño de la matriz. El tamaño de la matriz se ajustará automáticamente a medida que añadimos los archivos de elementos de objeto de secuencias de comandos a la misma. Sólo recuerde matrices comienzan desde “0” en lugar de “1”.

    Un consejo rápido que será muy útil con este tutorial a medida que trabajamos dentro del Editor de la Unidad; esto le ahorrará un montón de problemas a medida que se hace clic con el varios archivos y arrastrándolos al inspector en el campo de matriz.

    Si se desplaza en el Editor de la Unidad y mira hacia arriba en la esquina superior derecha del Inspector, verá un icono de un candado pequeño. Si hace clic en este bloqueo mientras tiene un objeto de juego seleccionado en la escena de este bloqueo en realidad bloquear la ventana de inspección de modo que a medida que está haciendo clic en varios archivos de la ventana de inspección permanecerá concentrado en ese objeto del juego que usted eligió para “cerradura. “


    Crear el primer cliente en activo empleado objeto de secuencias de comandos

    Abre la carpeta CustDialogueSo. Crear un elemento de CustomerDialogueSO. Para ello, al igual que cómo creamos el primer objeto de secuencias de comandos anterior. Haga clic derecho> Crear> CustomerDialogueSO en el menú.


    Ahora tenemos que llenar en el campo de valor de los clientes Tarjetas de: “Hola, me gustaría pedir una pepperoni medio y pizza de hongos. Ayudar al cliente mediante la introducción de su orden en la caja registradora. Pulsa la tecla “Y” para ayudar a este cliente “.

    Esto es lo que el cliente responderá al empleado pizzería después de que son recibidos por el empleado.

    Ahora tenemos que conectar esto correctamente en el Inspector para que el empleado de diálogo con el cliente va en el orden correcto. Seleccione el activo objeto de secuencias de comandos llamada “EmployeeGreetsCustomer” utilice la punta que ha aprendido anteriormente sobre el bloqueo del Inspector seleccionando el icono de bloqueo. A continuación, vaya a la carpeta CustDialogueSo y arrastre el CustToEmployee scriptable activo objeto en el campo de matriz en el Inspector.


    Gestión de las partes de diálogo

    Ahora necesitamos una manera de controlar los diferentes estados del empleado a diálogo con el cliente y ser capaz de controlar lo que el empleado puede hacer después de que el cliente tiene lugar una orden con la pizzería.

    Crea una función privada denominada “PizzaDialogueManagement” Esta función se va a hacer que el diálogo entre el empleado y el cliente de antemano mediante la detección de si la tecla “Y” se ha pulsado por el usuario. A continuación, el componente de texto en el diálogo del controlador tiene que tirar en el custEmployeeInteraction.GetCustDialgoue. Asegúrese de llamar a la función PizzaDialogueManagement dentro de la función de actualización en el guión. Guardar la secuencia de comandos.
    // actualización se llama una vez por cuadro de actualización de vacío () {PizzaDialogueManagement (); PizzaDialogueManagement} private void () {CustomerDialogueSO [] = nextDialogue custEmployeeInteraction.GetNextDialogue (); si (Input.GetKeyDown (KeyCode.Y)) {custEmployeeInteraction = nextDialogue [0]; } TxtComponent.text = custEmployeeInteraction.GetCustDialgoue (); } 123456789101112131415 // actualización se llama una vez por framevoidUpdate () {PizzaDialogueManagement ();} privatevoidPizzaDialogueManagement () {CustomerDialogueSO [] nextDialogue = custEmployeeInteraction.GetNextDialogue (); si (Input.GetKeyDown (KeyCode.Y)) {custEmployeeInteraction = nextDialogue [0 ];} txtComponent.text = custEmployeeInteraction.GetCustDialgoue ();}

    Conexión de los otros activos scriptable diálogo objeto

    Un necesidades de cambio rápido que deban introducirse en el cliente Tarjetas de campo sobre el activo objeto de secuencias de comandos EmployeeGreetsCustomer.

    Añadir el texto “Golpear la tecla‘’para ayudar al cliente” Y para el campo de entrada.

    Crea un nuevo objeto de secuencias de comandos llamada CashRegister, puede dejar este activo en la carpeta EmployeeDialogueSO. Introduzca el texto “Haga clic en el botón de la caja registradora para navegar hasta la caja registradora. No se puede introducir el pedido del cliente mediante la selección de la opción de menú de lo que el cliente quería.”

    A continuación, arrastre el activo objeto scriptable EmployeeGreetsCustomer en el campo de matriz del objeto de secuencias de comandos CashRegister en el Inspector.


    Es importante tener todos los elementos de la matriz llenas en el interior del inspector para la matriz de diálogo siguiente. Se puede comprobar que todos ellos están conectados correctamente haciendo clic en cada uno de los activos objeto de secuencias de comandos en el proyecto y asegurarse de que están conectados de acuerdo a las imágenes a continuación:


    Una vez que ha verificado que todos los objetos de secuencias de comandos están conectados adecuadamente seguir adelante y guardar la escena y del proyecto. Golpear el botón de reproducción y prueba de lo que tenemos hasta ahora. La captura de pantalla a continuación es cómo debe aparecer la pantalla del juego una vez que el botón de reproducción ha sido exitosa.


    lo sigue con el símbolo, y la segunda parte debería tener este aspecto:


    Y por último, la tercera parte debe mostrar lo siguiente:


    Cámara Funcionalidad

    Seleccione la cámara principal en la escena. Restablecer la transformada componente en el inspector de manera que la cámara principal se encuentra ahora en el origen. Asegúrese de que la interfaz de usuario del envase se coloca en el origen, así, si no se ha vuelto a establecer a través del inspector.

    Seleccione el MainPanel y vaya a la Rect Transformar componente en el inspector. Cambie estos valores: Pos X = 0, Pos Y = 0, y Pos Z = 260.

    Vamos a utilizar una función integrada que la Unidad ha llamado “LookAt” vamos a tomar de la cámara principal transformar y luego mover la cámara utilizando la función “LookAt” para conseguir que se mueva a los otros paneles de la interfaz de usuario cuando el Caja registradora o cocinar la pizza botones se hace clic en el usuario.

    Crear un nuevo guión con el nombre “MenuNavigation.” Abra la secuencia de comandos en Visual Studio, agregar una función pública y el nombre de “LookAtPanel” que va a aceptar dos parámetros: transformar y panelTransform. Dentro de la función se iban a poner la cámara a la lookAt transfrom del panelTransform.
    LookAtPanel public void (Transformar panelTransform) {Camera.main.transform.LookAt (panelTransform.position); } 1234publicvoidLookAtPanel (Transform panelTransform) {Camera.main.transform.LookAt (panelTransform.position);}

    Guardar la secuencia de comandos. Navegar hacia atrás en el Editor de la Unidad y asegúrese de que la cámara principal en la escena está etiquetado como “MainCamera.”

    Seleccione el CashRegisterPanel y ajustar el Rect Transformar para que coincida con la siguiente captura de pantalla:


    Ahora selecciona la CookPanel y ajustar su Rect Transformar componente para que coincida con la pantalla de abajo:


    Crear un objeto de juego vacío y cambiarle el nombre a “PanelMenus.” Coloque el guión MenuNavigation a este objeto en la escena.

    Seleccione el GoToCashRegisterBtn y añadir a n Al hacer clic () para este botón. Seleccione el objeto PanelMenus, este objeto tiene el juego MenuNavigation script adjunto a ella que contiene el LookAtPanel función pública. Seleccione la MenuNavigation> LookAtPanel (Transform) desde el menú desplegable.


    El En función de clic debe tener este aspecto:


    Guardar la escena y el proyecto. Golpear el botón de reproducción, y luego haga clic en el botón blanco de la caja registradora: la cámara ahora debería cambiar su enfoque a la CashRegisterPanel. Modo de reproducción parada y probar el botón Cook Pizza, ahora la cámara deben centrarse en la CookPanel una vez que se hace clic en ese botón.

    Con esto concluye cómodamente esta segunda parte del tutorial. Vamos a añadir en algunos más botones a cada panel para volver a navegar el MainPanel más adelante en la parte 3 del tutorial. Nos vemos entonces!

    Mensajes relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *