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

UI 特殊类型

UI 的特殊实体类型,包括下拉菜单和输入框。

有一些特殊的实体类型,可以实现某些特殊的交互。

下拉框

创建一个 下拉框 用于允许用户展开并从列表中选择项目的实体。

一个 下拉框 实体至少必须具有以下属性:

  • 选项:下拉框展开时要显示哪些值。请为每个选项提供一个字符串值的数组。数组中的第一个值会显示为默认选项。

  • onChange:每次在下拉框中选择某个值时都会执行的函数,使用

你还可以配置该 下拉框 实体的其他组件,例如一个 uiTransform,就像其他 UI 实体一样。

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="选择一种颜色"
        fontSize={18}
        color={textColor}
        uiTransform={{
          width: '140px',
          height: '40px',
        }}
      />
      <Dropdown
        options={[`红色`, `蓝色`, `绿色`]}
        onChange={selectOption}
        uiTransform={{
          width: '100px',
          height: '40px',
        }}
      />
    </UiEntity>
)

index.ts 文件:

输入文本

创建一个 输入框 实体,允许用户输入文本。玩家必须先单击这个框,然后才能在其中输入。

该 输入框 实体的行为通过以下属性进行管理:

  • onSubmit:当玩家按下 Return/Enter 时执行的函数,使用提供的文本作为输入。文本字段会 不是 在这种情况下自动清空,你需要自己清空它(见下方示例)。

  • onChange:每当输入文本中的值发生变化时执行的函数。玩家在框中输入时,每增加或删除一个字符,就会执行一次该函数。

  • 已禁用:如果 真,玩家将无法与输入实体交互。

以下示例使用 onSubmit 将提供的文本记录到控制台。

最好同时提供一个提交按钮,并处理玩家按下 Enter/Return 键时的 onSubmit 事件。下面的示例展示了你可以如何做到这一点。

要清空输入字段,请设置 值 为 ' ' (一个空格)。Explorer 会将其视为空,并重新激活占位符文本。由于 UI 函数每一帧都会运行,请使用一个标志只在一帧内应用清空。

以下属性也可用于自定义文本字段的外观,其中大多数与 Label 实体中的属性类似:

  • 占位符:玩家开始输入任何内容之前显示的字符串。将这段文本作为提示,告诉他们应该输入什么会很有用。

  • 占位符颜色:用于占位符文本的颜色,作为一个 Color4.

💡 提示:请使用比玩家输入文本颜色更浅的色调。

  • 字体大小:文本大小,以数字表示。

    注意:该 字体大小 不受其实体或父实体大小的影响。

  • 颜色:玩家输入的文本颜色,作为一个 Color4.

  • 字体:要使用的字体。支持的值有: - 'sans-serif' (默认) - 'serif' - 'monospace'

  • 文本对齐:文本将如何与其父级对齐。其取值来自 `TextAlignType`。TextAlignType = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';

你还可以配置该 输入框 实体的其他组件,例如一个 uiTransform, OnMouseDown ,就像其他 UI 实体一样。

最后更新于