Tipos especiales de UI

Tipos especiales de entidad para la UI, incluidos dropdowns y cuadros de entrada.

Hay ciertos tipos de entidades especiales que permiten algunos tipos especiales de interacciones.

Desplegable

Crear un Desplegable entidad para permitir a los usuarios expandir y seleccionar un elemento de una lista.

A Desplegable la entidad debe tener al menos las siguientes propiedades:

  • opciones: Qué valores mostrar cuando el desplegable está expandido. Proporciona un objeto que contenga un array con un valor de cadena para cada opción. El primer valor del array se muestra como la opción predeterminada.

  • onChange: Una función que se ejecuta cada vez que se selecciona un valor en el desplegable, usando

También puedes configurar otros componentes del Desplegable entidad, como un uiTransform, como en otras entidades de UI.

archivo ui.tsx:

import { UiEntity, Label, Dropdown, ReactEcs } from '@dcl/sdk/react-ecs'
import { Color4 } from '@dcl/sdk/math'
import { Color4Type } from '@dcl/sdk/ecs'

function selectOption(index: number) {
  switch (index) {
    case 0:
      textColor = Color4.Red()
      break
    case 1:
      textColor = Color4.Blue()
      break
    case 2:
      textColor = Color4.Green()
      break
  }
}

let textColor: Color4Type = Color4.Red()

export const uiMenu = () => (
    <UiEntity
      uiTransform={{
        width: '200px',
        height: '100px',
        alignContent: 'auto',
        flexDirection: 'column',
        alignSelf: 'center',
      }}
    >
      <Label
        value="Selecciona un color"
        fontSize={18}
        color={textColor}
        uiTransform={{
          width: '140px',
          height: '40px',
        }}
      />
      <Dropdown
        options={[`Red`, `Blue`, `Green`]}
        onChange={selectOption}
        uiTransform={{
          width: '100px',
          height: '40px',
        }}
      />
    </UiEntity>
)

archivo index.ts:

circle-exclamation

Texto de entrada

Crear un Input entidad para permitir a los usuarios escribir texto. Los jugadores deben primero hacer clic en este recuadro antes de poder escribir en él.

El comportamiento de la Input entidad se gestiona mediante las siguientes propiedades:

  • onSubmit: Una función que se ejecuta cuando el jugador presiona Return/Enter, usando el texto proporcionado como entrada. El campo de texto se borra cuando esto sucede.

  • onChange: Una función que se ejecuta cada vez que cambia un valor en el texto de entrada. A medida que el jugador escribe en el recuadro, esta función se ejecuta una vez por cada carácter que se añade o se elimina. También se llama cuando el jugador presiona Return/Enter y el texto se borra.

  • desactivar: Si true, el jugador no podrá interactuar con la entidad de entrada.

El siguiente ejemplo usa onSubmit para registrar el texto proporcionado en la consola.

Es una buena práctica proporcionar tanto un botón para enviar como manejar el evento "onSubmit" cuando el jugador presiona la tecla Enter/Return. El siguiente ejemplo muestra cómo puedes hacer esto. Ten en cuenta que, para mantener consistencia, la función realizada por el botón borra manualmente el texto en el campo de entrada.

circle-info

💡 Consejo: El ejemplo de arriba establece la valor propiedad del texto de entrada a una variable. Con esto, puedes cambiar el texto mostrado simplemente cambiando la variable. Esto te permite hacer cosas como borrar el texto, cambiar los valores del placeholder o incluso implementar funcionalidades de autocorrección.

Las siguientes propiedades también están disponibles para personalizar el aspecto del campo de texto, la mayoría de ellas similares a las presentes en Label entidades:

  • placeHolder: Cadena para mostrar antes de que el jugador empiece a introducir algo. Es útil hacer que este texto sea una pista sobre lo que debería escribir.

  • placeHolderColor: El color a usar para el texto del placeholder, como un Color4arrow-up-right.

circle-info

💡 Consejo: Usa una tonalidad más pálida del color del texto que escribe el jugador.

  • fontSize: El tamaño del texto, como un número.

    NOTA: El fontSize no se ve afectado por el tamaño de su entidad o entidades padre.

  • color: El color del texto que escribe el jugador, como un Color4arrow-up-right.

circle-exclamation

- `font`: La fuente a usar, tomando un valor del enum `Font`. Los valores soportados son: - `serif` - `sans-serif` _(predeterminado)_ - `monospace` - `textAlign`: Cómo se alineará el texto con su padre. Toma un valor de `TextAlignType`. TextAlignType = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';

También puedes configurar otros componentes del Input entidad, como un uiTransform, OnMouseDown como en otras entidades de UI.

Última actualización