For the complete documentation index, see llms.txt. This page is also available as Markdown.

Tipos especiais da UI

Tipos especiais de entity para a UI, incluindo dropdowns e caixas de entrada.

Existem certos tipos especiais de entidade que permitem alguns tipos especiais de interações.

Crie uma Dropdown entidade para permitir que os usuários expandam e selecionem um item de uma lista.

A Dropdown entidade deve ter pelo menos as seguintes propriedades:

  • options: Quais valores exibir quando o dropdown for expandido. Forneça um objeto contendo um array com um valor de string para cada option. O primeiro valor no array é exibido como a opção padrão.

  • onChange: Uma função que é executada toda vez que um valor é selecionado no dropdown, usando

Você também pode configurar outros componentes da Dropdown entidade, como um uiTransform, assim como em outras entidades de UI.

arquivo 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',
        pointerFilter: `block`,
        alignContent: 'auto',
        flexDirection: 'column',
        alignSelf: 'center',
      }}
    >
      <Label
        value="Selecione uma cor"
        fontSize={18}
        color={textColor}
        uiTransform={{
          width: '140px',
          height: '40px',
        }}
      />
      <Dropdown
        options={[`Red`, `Blue`, `Green`]}
        onChange={selectOption}
        uiTransform={{
          width: '100px',
          height: '40px',
        }}
      />
    </UiEntity>
)

arquivo index.ts:

Texto de entrada

Crie uma Input entidade para permitir que os usuários digitem texto. Os jogadores precisam primeiro clicar nesta caixa antes de poderem escrever nela.

O comportamento da Input entidade é gerenciado pelas seguintes propriedades:

  • onSubmit: Uma função que é executada quando o jogador pressiona Return/Enter, usando o texto fornecido como entrada. O campo de texto é limpo quando isso acontece.

  • onChange: Uma função que é executada toda vez que um valor no texto de entrada é alterado. À medida que o jogador digita na caixa, essa função é executada uma vez para cada caractere adicionado ou removido. Ela também é chamada quando o jogador pressiona Return/Enter e o texto é limpo.

  • disable: Se true, o jogador não poderá interagir com a entidade de entrada.

O exemplo a seguir usa onSubmit para registrar o texto fornecido no console.

É uma boa prática fornecer tanto um botão para enviar quanto lidar com o onSubmit evento quando o jogador pressiona a tecla Enter/Return. O exemplo a seguir mostra como você pode fazer isso.

Para limpar o campo de entrada, defina value // desenhar UI ' ' (um único espaço). O Explorer trata isso como vazio e reativa o texto do placeholder. Como a função de UI é executada a cada frame, use uma flag para aplicar a limpeza apenas por um frame.

As seguintes propriedades também estão disponíveis para personalizar a aparência do campo de texto, a maioria delas semelhante às presentes em Label entities:

  • placeHolder: String a ser exibida antes que o jogador comece a digitar qualquer coisa. É útil tornar esse texto uma dica sobre o que ele deve escrever.

  • placeHolderColor: A cor a ser usada para o texto do placeholder, como uma Color4.

💡 Dica: Use um tom mais claro da cor do texto que o jogador escreve.

  • fontSize: O tamanho do texto, como um número.

    NOTA: O fontSize não é afetado pelo tamanho de sua entidade ou de suas entidades pai.

  • color: A cor do texto que o jogador escreve, como uma Color4.

  • font: A fonte a ser usada, tomando um valor do Font enum. Os valores suportados são: - F_SANS_SERIF - F_SERIF (padrão) - F_MONOSPACE

  • textAlign: Como o texto se alinhará com seu pai. Ele recebe um valor de `TextAlignType`. TextAlignType = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';

Você também pode configurar outros componentes da Input entidade, como um uiTransform, OnMouseDown assim como em outras entidades de UI.

Atualizado