沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


侧边栏

scripting:extend:nativemenu

📚 NativeMenu

NativeMenu是一个轻量的基础UI系统,可供开发者在Demo阶段(或对UI没有高级需求)的场景下使用。

NativeMenu是特殊的UI形式,支持以World端直接为某个玩家建立一个UI并绑定事件(而不需要客户端写多余的代码),同时也支持Client端正常独立使用。

注意:NativeMenu同样属于世界场景实例,加载新场景时将会自动销毁。

📒 使用方式

World端Client端的具体使用方式有些许差异(指API方法部分),除此之外的数据绑定等内容都是通用的。

let view = {
    Cover: "",
    Tag: "Test",
    Title: "XXX",
    Info: "ABC",
    Width: 500,
    Align: 1,
    Layout: 1,
    Items: [
        {
            Text: "点击:输出玩家Name",
            OnClick: () => {
                DLog("PlayerName: " + player.Name);
            }
        },{
            Input: "xxx",
            Restrict: "*",
            OnFocus: (text) => {
                DLog("输入框文本: " + text);
            }
        }
    ]
};
 
//World
player.CreateNativeMenu(view);
 
//Client
CreateNativeMenu(view);
 
//Destroy同理
player.DestroyNativeMenu();
DestroyNativeMenu();

📒 传递数据解析

使用NativeMenu的方法十分简单,只需要按规范自定义一个JavaScript的对象结构,就可以实现一个轻量级菜单的UI效果。

let view = {
    Cover: "", //顶部图片,可空,否则填写一个Store/Sprite图片ID
    Tag: "Test", //识别标签,可空,无实际作用,主要用于检测\分辨
    Title: "XXX", //顶部标题文本
    Info: "ABC", //顶部子标题文本
    Width: 500, //宽度,可空(默认360)
    Align: 1, //对齐方向(0左;1中;2右)
    Layout: 1, //窗口布局方向,相对于屏幕(0左;1中;2右)
    Items: [ //在此数组填写【Item项目数据】
        {
            Tag: "Test1", //可空,主要用于SetNativeMenuText等情况查询使用
            Text: "文本标题", //由于是Text,所以表示标签文本
            Info: "介绍XXX", //可空,如填写则表示【鼠标悬停焦点】时,将此段内容更换至【菜单子标题】,失去焦点时恢复默认窗口子标题
            OnClick: () => { //当被点击事件
                DLog("PlayerName: " + player.Name);
            }
        },{
            Input: "输入内容", //由于是Input,所以表示可输入内容的文本
            Restrict: "*", //可空,如为"*"表示密码输入,否则将以正则表达式限制输入
            OnFocus: (text) => { //当被修改后失去焦点事件(回车)
                DLog("输入框文本: " + text);
            }
        }
    ]
};
 
CreateNativeMenu(view);

scripting/extend/nativemenu.txt · 最后更改: 2024/01/13 15:47 由 bibiboxs