Skip to content

UI 编辑器基础

UI 编辑器用于在 SE 编辑器中编排游戏画面 UI(计时器、积分板、按钮、提示文本等),所有 UI 控件都以 EUI 前缀类名存在,可以在脚本中通过 EUIManager 进行访问与控制。

入口

UI 编辑器可通过编辑器顶部中央的【界面】按钮进入。

进入后界面分为三个主要区域:

  • 左侧控件库:可拖拽的控件类型列表。
  • 中央画布:UI 排版与预览区。
  • 右侧属性面板:选中控件后展示其可编辑属性。

控件类型

控件类型脚本类名用途主要属性
布局容器EUILayout嵌套排版容器,用于组织子控件、做对齐与分组,自身无背景色
按钮EUIButton可点击按钮,自带常规 / 按下 / 禁用三态NormalImagePressImageDisableImage;事件 OnClicked / OnTouchBegan / OnTouchEnded / OnTouchMoved
图片EUIImage静态图片 / 图标Image(必须为 Int 资源 ID)
文本标签EUITextLabel显示静态或动态文本Text、字体、字号、颜色、对齐方式、描边
富文本标签EUIRichTextLabel支持富文本标签解析、自动换行、跑马灯富文本标签清单待补
输入框EUIInputField接收玩家文本输入默认文本、提示文本、长度上限等待补
列表视图EUIListView滚动列表容器,常用于商品列表、排行榜方向、滚动条、单元格模板等待补
线性进度条EUILoadingBar线性进度显示,常用于血条 / 加载条最小值 / 最大值 / 当前值 / 朝向
圆形进度EUIProgressTimer扇形 / 圆形进度显示,常用于技能 CD起始角 / 进度方向 / 贴图模式
蒙版裁剪EUIClippingNode非矩形蒙版,可自定义裁剪形状
粒子特效EUIEffectUI 层粒子特效(点击反馈、命中特效等)
世界空间 UIEUISceneNode绑定到 3D 世界坐标的 UI 节点(血条头顶飘字等)

WARNING

  • 图片属性Image / NormalImage / BackgroundImage 等)必须为 Int(资源 ID),传入字符串或 nil 会导致 hit-test 失效,按钮 / 触摸事件失效。
  • EUIInputField 没有快捷创建方法 CreateInputField。如需通过脚本动态创建,必须使用通用方法 euiManager:CreateEUINode("EUIInputField", ...)
  • EUILayout 自身没有背景色,需要带背景色的容器请用 EUIImage 代替。

各控件的详细属性、方法、事件签名将随 Game API 文档发布后同步补充。

通用属性

所有 UI 控件继承自 EUINodeBase,共享一组通用属性:

属性类型说明
NameString控件名(用于脚本定位、ECA 事件绑定)
NodeIDString节点唯一 ID(导出时生成)
PositionVector2位置(默认锚点 0.5,0.5,指向节点中心点)
SizeVector2控件宽高
AnchorVector2锚点,默认 (0.5, 0.5)
VisibleBool是否显示
OpacityFloat不透明度 0~1
RotationFloat旋转角度
TouchEnabledBool是否响应触摸
SwallowTouchEnabledBool是否阻止触摸事件穿透
LocalZOrderInt同级控件的层级排序

坐标系与定位

UI 坐标系:

  • 坐标原点在屏幕左下角,X 轴向右为正,Y 轴向上为正。
  • 默认锚点 (0.5, 0.5)Position 指向控件中心点坐标。
  • 子控件的 Position 相对父控件左下角原点计算(不是父中心)。

常见定位:

场景写法
屏幕居中Position = (sw/2, sh/2)
全屏铺满Position = (sw/2, sh/2), Size = (sw, sh)
子控件在父容器居中Position = (parentW/2, parentH/2)
子控件与父容器完全重叠Anchor = (0,0)Position = (0,0)Size = (parentW, parentH)

WARNING

  • 不要把 Position = (0, 0) 当成"居中"。在默认锚点下,节点中心会落在屏幕左下角,只有节点的右上四分之一可见。
  • 不要硬编码 1920 / 1080。屏幕分辨率应通过 euiManager:GetDeviceResolution() 动态获取。

编辑器中的操作流程

下面以"计时器 + 积分板 + 重置按钮"为例展示创建 UI 的流程:

第一步,从控件库拖拽一个文本标签到画布。

第二步,修改文本框名称(例如 LabelTime),调整位置、字体和大小。

第三步,修改配色与描边。

第四步,重复以上步骤再创建一个 LabelPoint 文本标签作为积分板。

第五步,再添加一个 BtnReset 按钮。

第六步,点保存后退出 UI 编辑界面。

后续