楼主: Rose_shadows

[原创发布] [MV/MZ]ULDS无限图层插件使用详解 (2025-07-14更新+范例v4)

 火 [复制链接]
梦石
0
星屑
358
在线时间
134 小时
注册时间
2015-12-25
回帖
21
发表于 2024-4-15 00:54:49 | 显示全部楼层
麻烦问一下,想做成进入遮罩房间后显示npc, 并且npc可以在遮罩房间和走廊之间来回移动,应该怎么做呢?
回复

使用道具 举报

梦石
0
星屑
7800
在线时间
868 小时
注册时间
2021-8-28
回帖
93
 楼主| 发表于 2024-4-15 14:15:14 | 显示全部楼层
人偶师与机器人 发表于 2024-4-15 00:54
麻烦问一下,想做成进入遮罩房间后显示npc, 并且npc可以在遮罩房间和走廊之间来回移动,应该怎么做呢? ...

可以转换一下思路,底下铺上一整块房间+走廊的地图,然后用黑色遮罩图片遮住各个房间就行。玩家踩到哪个区域就隐藏哪个区域的黑色遮罩。遮罩的visible可以这样写:

"visible": "(function(){var regionId = 200; if($gamePlayer.regionId()===regionId){return false;}else{return true;}})()"

表示当玩家踩到区域#200时遮罩隐藏。
回复

使用道具 举报

梦石
0
星屑
144
在线时间
21 小时
注册时间
2024-5-1
回帖
7
发表于 2024-5-17 21:18:19 | 显示全部楼层
感谢大佬!
回复

使用道具 举报

梦石
0
星屑
7800
在线时间
868 小时
注册时间
2021-8-28
回帖
93
 楼主| 发表于 2025-7-14 16:35:07 | 显示全部楼层
ULDS简易范例更新至v4.00,更新内容如下:
1. 修改了ULDS插件,新增截取源图像的一部分作为图片图像的功能,并添加了对应的范例;
2. 初步整理了范例工程和插件帮助内容;
3. 更新了 ReadMe 文件。
回复

使用道具 举报

梦石
0
星屑
2617
在线时间
375 小时
注册时间
2021-9-20
回帖
71
发表于 2026-1-15 15:15:43 | 显示全部楼层
地图设定的宽高是否要和图片大小一致?图片尺寸是否有限制,我图片是3500*3000,是不是过大了?
回复

使用道具 举报

梦石
0
星屑
1374
在线时间
127 小时
注册时间
2020-7-23
回帖
70
发表于 2026-1-15 16:34:24 | 显示全部楼层
kingybk1976 发表于 2026-1-15 15:15
地图设定的宽高是否要和图片大小一致?图片尺寸是否有限制,我图片是3500*3000,是不是过大了? ...

不用,但是图片不会自动缩放,不是做滚动效果的话默认只会显示出左上角的一部分。你可以先在RM里铺个底然后右键地图保存为图像,之后照着地图图像的尺寸调整素材
臭画画的
我的代码盲让我用插件都举步维艰
梦中Non-Title RPG简称梦NTR脑内制作中!
回复

使用道具 举报

梦石
0
星屑
114
在线时间
32 小时
注册时间
2026-2-17
回帖
5
发表于 2026-3-2 03:13:59 | 显示全部楼层
谢谢大大的教程!
做的时候有想到能不能在遮罩房间房间基础上,玩家站在特定ID区域内,效果为房间慢慢显现而不是瞬间显现
自己尝试的时候在“opacity”里加了一段检测玩家有没有踩在id10区块上,但是改了好久场景还是像“visible”一样是踩在区域内瞬间显现的
虽然也有可能是自己哪里没检查出来或者脑子笨没理解,麻烦大佬看看了><
<ulds> {
"name": "bathroom1",
"x": "this.rx(0)",
"y": "this.ry(0)",
"z": 1,
"opacity": "(function(){var regionId=10;var duration=1.5;var f=duration*60;var val=255/f;if($gamePlayer.regionId()==regionId){if(t<f){return t*val;}else{return 255;};}else{return 0;}})()"
} </ulds>
回复

使用道具 举报

梦石
0
星屑
7800
在线时间
868 小时
注册时间
2021-8-28
回帖
93
 楼主| 发表于 2026-3-8 17:36:45 | 显示全部楼层
本帖最后由 Rose_shadows 于 2026-3-8 17:37 编辑
pharnine 发表于 2026-3-2 03:13
谢谢大大的教程!
做的时候有想到能不能在遮罩房间房间基础上,玩家站在特定ID区域内,效果为房间慢慢显现 ...


很有意思的想法!这个要做到的话可以参考自由淡入淡出那个例子,因为无法实时获取到图层的真正不透明度,所以要用变量来存储图层的当前不透明度和目标不透明度。
可以这样写:

"opacity": "(function(){var regionId=16;var character=$gamePlayer;var init_opacity=0;var duration=0.5;var vId_opacity=11;var vId_target=12;var f=duration*60;var step=(255-init_opacity)/f;if(!v.value(vId_opacity)){v.setValue(vId_opacity,init_opacity);}if(character.regionId()===regionId){if(v.value(vId_target)!==255){v.setValue(vId_target,255);}var result=Math.min(v.value(vId_target),v.value(vId_opacity)+step);if(v.value(vId_opacity)!==result){v.setValue(vId_opacity, result);}return result;}else{if(v.value(vId_target)!==init_opacity){v.setValue(vId_target,init_opacity);}var result=Math.max(v.value(vId_target),v.value(vId_opacity)-step);if(v.value(vId_opacity)!==result){v.setValue(vId_opacity, result);}return result;}})()"

其中:
regionId - 人物踩在这个ID的区域里淡入图层,不在该区域则淡出图层。例子占用了区域#16。
character - 哪个人物所踩的区域可以决定图层的淡入淡出。例子里的 $gamePlayer 指玩家。
init_opacity - 人物没有踩在区域内时图层的初始不透明度。
duration - 淡入/淡出时长。单位秒。
vId_opacity - 存储当前不透明度的变量ID。只读。例子占用了变量#11。
vId_target - 存储目标不透明度的变量ID。只读。例子占用了变量#12。

所以这个例子的效果是当玩家踩在区域#16时,图层会慢慢显现,离开区域#16时图层则会渐渐消失。
回复 1 0

使用道具 举报

梦石
0
星屑
79
在线时间
13 小时
注册时间
2026-2-27
回帖
1
发表于 2026-3-16 12:25:12 | 显示全部楼层
感谢大佬的教程,尝试了一些想法,很受用,很优秀的插件

另外我有一些疑问,比如说能否全局设置一些ulds,因为我现在对话框就是通过ULDS实现的,每张图都做多少有点累(虽然也只是每张图多贴一段罢了)

另外战斗界面中是否可能运用ULDS?
回复

使用道具 举报

梦石
0
星屑
114
在线时间
32 小时
注册时间
2026-2-17
回帖
5
发表于 2026-3-17 20:05:47 | 显示全部楼层
Rose_shadows 发表于 2026-3-8 17:36
很有意思的想法!这个要做到的话可以参考自由淡入淡出那个例子,因为无法实时获取到图层的真正不透明度, ...

测试了一下完全可以!原本有点指令冲突的bug也用这个解决了,感谢大佬!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部