Skip to content

呼叫高级ui & 系统ui

前言

在游戏开发中,我们经常需要调用一些高级UI界面或系统内置的UI界面,如菜单、存档、设置等。本教程将介绍如何使用CallCustomUICallSystemUI函数来实现这些功能。

1、CallCustomUI - 打开高级ui界面

CallCustomUI函数用于打开自定义的高级UI界面。

函数签名

typescript
/**
 * 打开高级ui界面
 * @param index 界面索引(工具端界面索引值-1)
 * @param params 界面参数
 * @param closeSelf 是否关闭当前界面
 */
function CallCustomUI(index, params?, closeSelf?);

参数说明

  • index:界面索引,用于标识要打开的高级UI界面(可以在工具中查看每个界面的索引id进行减1),从0开始
  • params:可选,界面参数,以对象形式传递给UI界面,例如传递{"fps": 1}表示打开当前ui所需要的淡入时间为帧数为1
  • closeSelf:可选,布尔值,指示是否在打开新界面时关闭当前界面

使用示例

typescript
// 打开索引为0001的高级UI界面,并传递fps参数,不关闭当前界面
CallCustomUI(0, {
    "fps": 1
}, false);

2、CallSystemUI - 打开系统ui界面

CallSystemUI函数用于打开系统内置的UI界面,如菜单、存档、设置等。

函数签名

typescript
/**
 * 打开系统ui界面
 * @param name 系统界面名
 * @param params 界面参数
 * @param closeSelf 是否关闭当前界面
 */
function CallSystemUI(name: SYSTEM_UI, params?: any, closeSelf?: boolean);

系统界面枚举

系统提供了多种内置的UI界面,通过SYSTEM_UI枚举来标识:

typescript
enum SYSTEM_UI {
    /**
     * 菜单界面
     */
    SysMenu = 10001,
    /**
     * 剧情回放界面
     */
    SysReplay = 10002,
    /**
     * CG鉴赏界面
     */
    SysCGGallery = 10003,
    /**
     * BGM鉴赏界面
     */
    SysBGMGallery = 10004,
    /**
     * 存档界面
     */
    SysSave = 10005,
    /**
     * 读档界面
     */
    SysLoad = 10006,
    /**
     * 设置界面
     */
    SysSetting = 10007,
    /**
     * 商城界面
     */
    SysShop = 10010,
    /**
     * 限时商城界面
     */
    SysFlashSale = 10012,
    /**
     * 签到界面
     */
    SysDailyAttendance = 10013,
    /**
     * 取名界面
     */
    SysName = 10014,
    /**
     * 换装界面
     */
    SysOutfit = 10015,
}

参数说明

  • name:系统界面名称,必须是SYSTEM_UI枚举中的一个值
  • params:可选,界面参数,根据不同的界面有不同的参数格式
  • closeSelf:可选,布尔值,指示是否在打开新界面时关闭当前界面

使用示例

打开菜单界面

typescript
// 打开菜单界面,不关闭当前界面
CallSystemUI(SYSTEM_UI.SysMenu, null, false);

打开存档界面

typescript
// 打开存档界面,不关闭当前界面
CallSystemUI(SYSTEM_UI.SysSave, null, false);

打开取名界面

typescript
// 打开取名界面,传递参数,不关闭当前界面
CallSystemUI(SYSTEM_UI.SysName, {
    "args": ["姓,0,0,名,0,1,昵称,0,2,国家,0,3", 3],
    "fps": 1
}, false);

打开换装界面

typescript
// 打开换装界面,传递角色ID参数,不关闭当前界面
CallSystemUI(SYSTEM_UI.SysOutfit, {
    "args": ["1"],
    "fps": 1
}, false);

3、在Scene中使用

在Scene类中,你可以通过以下方式调用这些函数:

打开系统菜单

typescript
@LM.Class("MyScene")
export default class MyScene extends LM.Scene {
    init() {
        const menuButton = new LM.Button();
        menuButton.text = "打开菜单";
        menuButton.fontSize = 36;
        menuButton.fontColor = "#ffffff";
        menuButton.y = 200;
        menuButton.onClick(() => {
            // 打开系统菜单
            CallSystemUI(LM.SYSTEM_UI.SysMenu, null, false);
        });
        this.addChild(menuButton);
    }
}

打开高级UI界面

typescript
@LM.Class("MyScene")
export default class MyScene extends LM.Scene {
    init() {
        const customUIButton = new LM.Button();
        customUIButton.text = "打开高级UI";
        customUIButton.fontSize = 36;
        customUIButton.fontColor = "#ffffff";
        customUIButton.y = 300;
        customUIButton.onClick(() => {
            // 打开索引为0001的高级UI界面
            CallCustomUI(0, {
                "customParam": "value"
            }, false);
        });
        this.addChild(customUIButton);
    }
}

4、注意事项

  1. 使用CallSystemUI时,确保使用正确的SYSTEM_UI枚举值
  2. 传递参数时,注意参数格式要与目标界面的要求一致
  3. 设置closeSelftrue会关闭当前界面,可能导致状态丢失,请谨慎使用
  4. 高级ui界面的事件可以呼叫逻辑积木scene和脚本scene

通过合理使用这两个函数,你可以轻松地在游戏中集成各种系统UI和高级自定义UI,提升游戏的交互体验。