meta data for this page
  •  

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
developer:nativemenu [2025/07/24 19:57] – 移除 - 外部编辑 (Unknown date) 127.0.0.1developer:nativemenu [2025/07/26 22:12] (当前版本) bibiboxs
行 1: 行 1:
 +<markdown>
 +# NativeMenu
  
 +`NativeMenu`是一个**轻量的基础UI系统**,可供开发者快速实现**基础菜单GUI**。
 +
 +`NativeMenu`是特殊的UI形式,支持以World端直接为某个玩家建立一个UI并绑定事件(而不需要客户端写多余的代码),同时也支持Client端正常独立使用。
 +
 +**注意:`NativeMenu`属于世界场景实例,加载新场景时将会自动销毁。**
 +
 +![](asset:1686063636772.png)
 +
 +
 +
 +## 使用方式
 +
 +[World端](scripting/world/player)与[Client端](scripting/client/main)的具体使用方式有些许差异(指API方法部分),除此之外的数据绑定等内容都是通用的。
 +
 +```javascript
 +let view = {
 +    Cover: 0,
 +    Tag: "Test",
 +    Title: "XXX",
 +    Info: "ABC",
 +    Width: 500,
 +    Align: 1,
 +    Layout: 1,
 +    Hotkey: true,
 +    Items: [
 +        {
 +            Text: "点击:输出玩家Name",
 +            OnClick: () => {
 +                DLog("PlayerName: " + player.Name);
 +            }
 +        },{
 +            Input: "xxx",
 +            Restrict: "*",
 +            OnFocus: (text) => {
 +                DLog("输入框文本: " + text);
 +            }
 +        }
 +    ]
 +};
 +
 +Client.Core.CreateNativeMenu(view);
 +
 +//Destroy
 +Client.Core.DestroyNativeMenu();
 +```
 +
 +
 +
 +## 传递数据解析
 +
 +使用`NativeMenu`的方法十分简单,只需要按规范自定义一个JavaScript的对象结构,就可以实现一个轻量级菜单的UI效果。
 +
 +```javascript
 +let view = {
 +    Cover: 0, //顶部图片,可空,否则填写一个Store/Sprite图片ID
 +    Tag: "Test", //识别标签,可空,无实际作用,主要用于检测\分辨
 +    Title: "XXX", //顶部标题文本
 +    Info: "ABC", //顶部子标题文本
 +    Width: 500, //宽度,可空(默认360)
 +    Align: 1, //对齐方向(0左;1中;2右)
 +    Layout: 1, //窗口布局方向,相对于屏幕(0左;1中;2右)
 +    Hotkey: true, //是否启用快捷键
 +    Items: [ //在此数组填写【Item项目数据】
 +        {
 +            Tag: "Test1", //可空,主要用于SetNativeMenuText等情况查询使用
 +            Text: "文本标题", //由于是Text,所以表示标签文本
 +            Info: "介绍XXX", //可空,如填写则表示【鼠标悬停焦点】时,将此段内容更换至【菜单子标题】,失去焦点时恢复默认窗口子标题
 +            OnClick: () => { //当被点击事件
 +                DLog("PlayerName: " + player.Name);
 +            }
 +        },{
 +            Input: "输入内容", //由于是Input,所以表示可输入内容的文本
 +            Restrict: "*", //可空,如为"*"表示密码输入,否则将以正则表达式限制输入
 +            OnFocus: (text) => { //当被修改后失去焦点事件(回车)
 +                DLog("输入框文本: " + text);
 +            }
 +        }
 +    ]
 +};
 +
 +Client.Core.CreateNativeMenu(view);
 +```
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +</markdown>