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

Tipos Especiais de UI

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

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

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

Um Dropdown Entity deve ter pelo menos as seguintes propriedades:

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

  • onChange: Uma função que é executada sempre que um valor é selecionado no Dropdown, usando

Você também pode configurar outros componentes do Dropdown Entity, como um uiTransform, como em outras entities de UI.

ficheiro 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="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>
)

ficheiro index.ts:

Texto de entrada

Criar um Input Entity para permitir que os usuários digitem texto. Os jogadores devem primeiro clicar nesta caixa antes de poderem escrever nela.

O comportamento do Input Entity é 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 é não limpo automaticamente quando isso acontece; você precisa limpá-lo manualmente (veja o exemplo abaixo).

  • onChange: Uma função que é executada sempre que um valor no texto de entrada é alterado. À medida que o jogador digita na caixa, esta função é executada uma vez para cada caractere que é adicionado ou removido.

  • disabled: Se true, o jogador não poderá interagir com a Entity 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 tratar 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 para ' ' (um único espaço). O Explorer trata isso como vazio e reativa o texto de placeholder. Como a função de UI é executada a cada frame, use uma flag para aplicar a limpeza por apenas um frame.

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

  • placeholder: String a ser exibida antes de o jogador começar a digitar qualquer coisa. É útil fazer deste texto uma dica sobre o que ele deve escrever.

  • placeholderColor: A cor a ser usada para o texto de 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.

    OBS.: O fontSize não é afetado pelo tamanho de sua Entity ou das entities pai.

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

  • font: A fonte a ser usada. Os valores suportados são: - 'sans-serif' (padrão) - 'serif' - '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 do Input Entity, como um uiTransform, OnMouseDown como em outras entidades de UI.

Atualizado