layer-groupUI 基础

向你的游戏添加 UI 需要编写代码,但在 AI 的帮助下,制作复杂的交互式 UI 要容易得多


向游戏添加用户界面需要编写代码,但一旦你掌握了几种模式,就能快速构建干净、可扩展的界面。本指南将通过一步步的教程,最终展示一个完整的对话框示例。

circle-info

所有针对玩家的界面必须在该玩家的 ao_late_update 调用栈内绘制并用 is_local_or_server()包裹。这可以防止界面出现在错误的客户端上。

在任何时候,你都可以跳转到 UI 参考 以了解更多模式和更深入的细节。

步骤 1:创建 UI 入口点

所有交互式界面都应从本地玩家的 ao_late_update:

Player :: class : Player_Base {
    ao_late_update :: method(dt: float) {
        if this->is_local_or_server() {
            draw_ui(this);
        }
    }
}

步骤 2:从屏幕矩形开始

屏幕界面应始终派生自 UI.get_safe_screen_rect()UI.get_screen_rect()。记住:(0, 0) 是左下角,Y 向上增长。

draw_ui :: proc(player: Player) {
    screen := UI.get_safe_screen_rect();

    // 一个简单的居中面板
    panel := screen->center_rect()->grow(120, 200, 120, 200);
    UI.quad(panel, core_globals.white_sprite, {0, 0, 0, 0.7});
}

步骤 3:使用切割进行布局

在布局多个元素时,应从矩形中切割出空间,而不是从相同的原点定位所有内容。

步骤 4:添加文本

使用文本设置来控制大小、颜色和对齐方式。

步骤 5:添加按钮

按钮将布局与交互结合起来。使用引擎提供资源中的按钮精灵(参见 UI 参考 以获取更多信息)。

步骤 6:构建对话框

现在将所有步骤组合成一个可重用的对话框布局。

最后更新于