还没有账号?赶快去注册吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 mrt114514 于 2026-8-19 18:48 编辑
本教程仅适用于即将发布的 南滨创意3.1 以及 LMTR 自定义导视牌资源包
导视系统为乘客带来便利,自定义你的导视系统是必要的
JSON导视系统
先创建资源包基本格式,在
中编写你的导视项,它大概是这样的
- {
- "signs": [
- {
- "id": "nanbin_arrow",
- "textureResource": "nanbin:textures/block/sign/arrow"
复制代码 接下来我来详细介绍一下它们各自的接口
1、"id"(必修)这是你的导视内容的唯一ID,应使用 英文小写 与 英文下划线“_“ 以及数字构成
2、"textureResource"(必修)你的显示图标
3、"backgroundColor":背景颜色(hex颜色)
4、"customText":显示文本
5、"flipTexture":翻转图标
6、"flipCustomText":文字靠右
7、"small":缩小图标
8、"textColor":文本颜色(原版指示牌不可用)
9、"textSize":文本大小(1.0为默认大小)(原版指示牌不可用)
10、"textBold":文本加粗(原版指示牌不可用)
JavaScript导视
首先,创建
- assets/nanbin/js_signs_config.json
复制代码 大概是这样的
- {
- "scripts": [
- {
- "id": "example_clock",
- "path": "assets/nanbin/js/example_clock.js",
- "icon": "nanbin:textures/block/sign/js_icon.png",
- "name": "js_sign.nanbin.example_clock"
- }
- ]}
复制代码 1、"id"这是你的导视内容的唯一ID,应使用 英文小写 与 英文下划线“_“ 以及数字构成
2、"path"你的js文件位置
3、"icon":显示图标
4、"name":名称(可使用lang文件做翻译)
然后,制作你的js文件
首先,遵循nte的js三件套
- function create(ctx, state, sign) {
- }
- function render(ctx, state, sign) {
- }
- function dispose(ctx, state, sign) {
- }
复制代码 不同的是,最好不要随意使用print函数,它会打印到玩家的聊天框
然后,我们来介绍一下绘制函数:
1、文本绘制函数
Text.create()
.pos(i * barW, barH) //左上角顶点位置坐标
.size(barW, h * 0.4) //大小坐标
.text("Hello World") //绘制的内容
.color(0xFF000000) //绘制的文本颜色(hex)
.scale(0.65) //缩放(默认1.0)
.centered() //是否居中显示(没有的时候默认左对齐)
.draw(ctx);
值得注意的是,我们会自动完成中英文的分割,想原版MTR一样用 “|” 分割开就行
2、材质绘制函数
3、图形绘制函数
图形只提供了矩形,各位自己看吧
那么我们都提供了什么接口呢,各位自己看吧
| api | | | state | 生命周期内的共享状态对象(create 创建、render 读取) | | ctx | 绘制上下文(世界单位坐标:x∈[0,getWidth()],y∈[0,getHeight()]) | | Text / Texture / Rect / Line | |
然后是数据接口 | 分类 | API 方法 | 说明 | | 屏幕信息 | getScreenKey() / getScreenType() | 屏幕唯一标识;类型:platform/route/exit/station/custom | | | | | | | | | | | getCellIndex() / getSignIds() / getCellSignId(i) | | | getBackgroundColor() / getSelectedIds() / getSelectedStationIds() | | | | | | 车站 / 线路 | getStationName(platformId) / getStationNames() | 获取站台 ID 对应车站名称 / 获取全部车站名称 | | getRouteName(color) / getRouteName(color, english) | | | getRouteNumber(key) / getRouteNumbers() | | | getRouteDestination(color) | | | | | | getSelectedColors() / getRouteColor(i) | | | 出口 | getExitCount() / getExitNumbers() / getExitDestinations(i) / getExitInfo(i) | | | 时间 / 结果 | getWorldTime() / getFormattedTime("HH:mm") | | | | |
需要注意的是,部分接口我们会提供屏幕,玩家可以直接打开它们,开发者也无需重写屏幕
|