跳到主要内容

故障排查

以下各节从可见现象出发,按常见程度列出原因,并链接到详细说明。

文本​

文本不显示​

  • 缺少字体。 没有已加载的字体资源,文本不会绘制。引擎应用需要 pc.FontHandler,且字体必须加载完成。
  • 缺少字符。 字体中没有的字符会显示为空格,控制台会逐一警告。应将其加入字体,详见选择字符。
  • 颜色或不透明度。 文字与背景同色,或 opacity 为 0 时,虽然存在也不可见。
  • 位于屏幕外。 未设置锚点的元素默认位于父项左下角,可能超出可见范围,详见锚点。

文本不换行​

需要启用 Wrap Lines 并提供约束宽度:关闭 Auto Width 后设置宽度,或使用水平分离锚点。详见尺寸、换行与行数限制。

文本不缩小适配​

Auto Fit Width 和 Auto Fit Height 仅在对应的 Auto Width 和 Auto Height 关闭时生效,详见缩小适配。

标记显示为普通文本​

需要启用 Enable Markup。启用后,如果存在标签未闭合等错误,文本仍会原样显示,控制台会报告错误,详见标记。

输入​

点击被忽略​

  • 没有 ElementInput。 引擎应用需自行创建,详见配置。
  • 输入关闭。 只有启用 Use Input 的元素接收输入,详见启用界面输入。
  • 其他元素覆盖。 上层启用输入的元素,例如不可见组,会优先接收点击,详见命中检测。
  • 摄像机未渲染所属图层。 仅通过渲染相应图层的摄像机检测元素。
  • 被遮罩裁切。 只有遮罩矩形内的部分接收输入,详见遮罩与输入。
  • 指针已锁定。 锁定时忽略鼠标按下,详见指针锁定。
  • 按钮未激活。 active 关闭时不触发按钮事件,详见禁用按钮。
  • 正在编辑器视口中测试。 视口界面不响应输入,应启动场景。

界面点击同时传到游戏​

在界面的 mousedown 和 touchstart 处理中阻止传播,并先创建 ElementInput,再创建鼠标和触摸设备。详见隔离游戏输入。画布上方的 HTML 则参阅隔离 HTML 输入。

触摸点击穿透到按钮后方​

触摸后浏览器发送模拟鼠标事件。若按钮点击后隐藏,事件就会到达后方对象。应取消画布的 touchend 默认行为,详见触摸屏。

按钮​

悬停或按下时外观不变​

  • 未设置图像实体。 引擎中 imageEntity 默认为 null,未设置就不会改变外观,详见图像实体。
  • 使用触摸。 触摸没有悬停状态,详见触摸与 XR。

悬停时按钮变灰或不透明​

染色会替换图像颜色和不透明度,默认染色是灰色且完全不透明。请设置匹配按钮的颜色,详见染色。

尺寸与缩放​

界面过小、过大或放不下​

  • Scale Mode 为 None。 未使用 Blend 时,界面按像素构建,不跟随画布尺寸,详见 Blend 缩放。
  • 像素比。 None 模式下,更高像素比会使界面更小,详见像素比。
  • Scale Blend。 竖屏下取 1 会使按横屏设计的界面过宽,详见选择缩放混合值。
  • 世界空间屏幕缩放。 米制尺寸等于分辨率乘实体缩放,详见尺寸与缩放。

界面被压扁​

摄像机 rect 仅覆盖部分画布时,会将屏幕空间界面压缩到该区域,详见图层与摄像机。

滚动视图与布局​

滚动视图不滚动​

  • 内容未启用输入。 要从空白处拖动,内容元素需要开启 Use Input。
  • 内容不大于视口。 滚动视图不会自动调整内容尺寸,详见内容尺寸。
  • 未设置滚动轴、模式或摩擦。 代码创建时需显式配置,详见创建滚动视图。
  • 没有鼠标设备。 引擎中鼠标拖动需要 pc.Mouse。

部分内容初始就在视口外​

滚动视图按内容轴心定位,轴心必须为左上角 [0, 1]。居中轴心会使一半内容超出左侧或顶部,详见滚动视图。

布局组中锚点或位置不生效​

布局组会设置子项的锚点、位置和计算尺寸。可通过 LayoutChild 的 Exclude from Layout 排除子项,详见子项放置规则。

图像与遮罩​

遮罩内没有内容​

  • 不透明度小于 1。 此时全部子项都会隐藏,详见形状遮罩。
  • 子项位于其他图层。 遮罩与被裁切元素必须同层,详见遮罩与图层。
  • 纹理包含半透明区域。 只有完全不透明像素才显示子项。

自定义材质不可见​

UI 图层仅绘制透明材质,应设置 blendType 开启混合,详见自定义材质。

图像出现暗边或亮边​

纹理透明像素的颜色被滤波混入可见边缘,详见避免暗边。

本地化​

显示本地化键而非译文​

  • 当前语言区域及其回退语言都没有该键的消息。
  • 文件未加载。 app.i18n 不负责加载本地化文件。编辑器中应保留这些资源的 Preload,详见加载文件。

显示 {number}​

该键对应复数消息。文本元素会显示第一种形式,并保留 {number}。应通过脚本调用 getPluralText 设置文本,详见脚本中的字符串。

切换语言后文本消失​

该语言区域指定了独立字体,加载完成前文本不会显示,详见本地化字体。

绘制​

界面绘制两次​

两个摄像机都渲染 UI 图层,应从另一个摄像机移除,详见图层与摄像机。

元素顺序错误​

元素按层级顺序绘制,将应置顶的元素移到其他元素之后,详见绘制顺序。React 中,新 <Entity> 始终添加到已有同级项之后,与 JSX 位置无关。屏幕重叠时应设置不同优先级,详见多屏幕与优先级。

世界空间界面从背面消失​

世界空间屏幕为单面,详见背面观察。

世界空间界面穿墙​

摄像机使用 CameraFrame,绘制 UI 图层时没有场景深度,详见世界空间界面与后处理。

另请参阅​