THE NVL Maker

 找回密码
 注册
搜索
查看: 182|回复: 4

[系统修改] 关于播放音效时存档对音效改动无效的问题

[复制链接]

10

主题

21

帖子

0

精华

游戏开发者

积分
21
发表于 2024-3-18 17:58:33 | 显示全部楼层 |阅读模式
哈喽D大
如题:

*start|序章
;这里是测试文本框的 前提是定位做好 定位什么的自己设吧 确保你有所谓的“全屏框”和“姓名框” 主要是示例
1 @bgm storage="BGM074.ogg"
2 @se buf="0" time="50" loop="1" storage="summer_beach1.ogg"
3 @bg storage="BG14a"
4 @fg pos="center" storage="fg01_02"
5 @dia
6 @history output="true"
7 @image left="100" visible="1" page="fore" layer="5" top="460" storage="姓名框"
8 @se buf="1" storage="kaizan-system02.wav"
9 @nvl娘
10 现在正常显示了~[lr]请自己调整坐标,并确保姓名框分离![w]
11 @fadeoutse buf="0" time="500"
12 @freeimage layer="5" page="fore"
13 现在就卸载掉了 因为没有姓名显示了。[w]


第2行为场景噪声(需要loop) 第8行为se(不需要loop),默认nvl设定buf0为音效,buf1为语音
设此时音效音量语音音量为默认50,如在第10行进入设置调整音效音量语音音量为70并存档退出游戏,那么在再次启动时保持调整的音量不变并读取存档后加载这两个音效,buf0buf1轨道的音量仍为50。

我不知道是不是原生问题还是工程有什么改动,这个脚本是重新开一个新工程写的。这样就导致一个问题如果我第二次开启游戏并在游戏设置页调整音量后并读取存档会发现音效又变成50了。但是这两个变量是全局变量所已很难搞。
如果我希望第二次开启游戏时调整的70等读档的时候能有效果,想请问一下有什么解决方案或者有什么思路讨教一下;或者是有什么bug出现想问一下思路。谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢????????????????????????????????????????????????????????????



回复

使用道具 举报

16

主题

990

帖子

0

精华

管理员

Rank: 9Rank: 9Rank: 9

积分
1011
发表于 2024-3-20 17:12:08 | 显示全部楼层
实际上是这样的,kr并不存在音效和语音区分的频道,
kag.bgmvolume和kag.sevolume才是原生设置。
为了能让它变成音效和语音区分,NVL做了这样的设置:(1)kag.sevolume:恒定为100
(2)修改和记录的变量:sf.sevolume、sf.voicevolume
(3)在通过slider修改时,将这两个全局变量同步赋值给kag.se[0].volume和kag.se[1].volume
但kag.se[0].volume和kag.se[1].volume都并非全局变量,是存档单独相关的。
所以就出现了虽然修改了se变量,但读档以后这两个子volume维持存档内效果的情况。确实算是个bug不过只要打开option画面重新调一下理论上就能同步了所以没有管(喂)
处理方法应该是在加载存档时使用一些方法强制进行同步。
可以考虑:
1)如果游戏没有语音,简单的办法是直接恢复使用kag.sevolume。
2)有语音的情况,修改SE.tjs里SESoundBuffer的restore函数部分,当id为语音/音效不同的channel时,针对性修改currentVolume的值,赋予它不同的全局变量。
3)更加不具备侵略性的修复方法:单独写一个tjs插件用来管理各频道音量,然后在插件的onStore/onRestore里面处理,不过有点蛋疼……



回复

使用道具 举报

10

主题

21

帖子

0

精华

游戏开发者

积分
21
 楼主| 发表于 2024-3-21 16:46:17 | 显示全部楼层
谢谢D大了!
当然后来试了一下找不着思路就放弃了……不过我发现了一个算是折中的方法,也给其他人看看因为我贴吧找了一圈也没有这个贴:
设buf0是环境底噪。
即sf.sevolume的值再填给另外一个新的sf变量,同时修改func.ks让音效音量slider同时修改sf.sevolume和这个新的变量
同时还可以让这个音效音量条一起修改buf2345等轨道,因为buf1是语音就让他继续控制(当然这样的话也可以继续修改func.ks和uioption再弄几个音量控制条),当然这是后话。
然后在option.ks里eval让kag.se[0].volume=新的变量,而sf.sevolume=kag.se[0].volume,这样的话打开设置页就自动修改同步了。

当然如果有人能有D大说的思路那更好,我是恶补tjs2manual但是还是看不懂。
回复

使用道具 举报

10

主题

21

帖子

0

精华

游戏开发者

积分
21
 楼主| 发表于 2024-3-21 21:11:31 | 显示全部楼层
VariableD 发表于 2024-3-20 17:12
实际上是这样的,kr并不存在音效和语音区分的频道,
kag.bgmvolume和kag.sevolume才是原生设置。
为了能让 ...

解决了D大(23333333)
其实只需要在autolabel.ks里加一行让kag.se[0].volume=sf.sevolume就行了,不需要整那么麻烦。同时这样的话也能实现语音音量的存档控制。
回复

使用道具 举报

16

主题

990

帖子

0

精华

管理员

Rank: 9Rank: 9Rank: 9

积分
1011
发表于 2024-3-22 17:17:24 来自手机 | 显示全部楼层
倒是也行hhh
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|nvlmaker

GMT+8, 2024-4-28 12:34 , Processed in 0.013128 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表