Project1

标题: 如何在游戏中修改音效 [打印本页]

作者: 喵呜喵5    时间: 2012-9-14 21:19
标题: 如何在游戏中修改音效
我希望在游戏中修改战斗音效、确定音效之类的,请问如何实现……

啊啊,不是说打开数据库最后一页来修改,是说游戏进行到一半的时候修改确定键、光标移动的音效dsu_plus_rewardpost_czw
作者: fxwd    时间: 2012-9-14 22:11
用脚本就可以了不过我家VA卸了。。。
作者: 喵呜喵5    时间: 2012-9-14 22:14
fxwd 发表于 2012-9-14 22:11
用脚本就可以了不过我家VA卸了。。。

请问使用什么脚本呢?
作者: 紫苍焰    时间: 2012-9-15 17:44
本帖最后由 紫苍焰 于 2012-9-15 17:52 编辑

……
不行,研制失败……
作者: xfx510061635    时间: 2012-9-15 18:18
貌似纯事件只能更改ME,SE,BGM。
不能更改光标音效。
脚本应该可以实现吧。
但是我是脚本盲。
只会事件。。
作者: 喵呜喵5    时间: 2015-12-28 17:44
本帖最后由 喵呜喵5 于 2015-12-28 17:54 编辑

时隔三年后重新回来扫自己的旧帖子:




基本上,在游戏中播放音效的功能主要都定义在 module Sound 中

例如,播放确定音效的定义:
  1.   # 确定
  2.   def self.play_ok
  3.     play_system_sound(1)
  4.   end
复制代码
而脚本中通过这个指令进行调用:
  1. Sound.play_ok
复制代码
因此,要在游戏中修改这块的音效,只要像这样写代码:
  1. class << Sound  
  2.   def play_ok
  3.     if 条件
  4.       play_system_sound(2)
  5.     else
  6.       play_system_sound(1)
  7.     end
  8.   end
  9. end
复制代码
在满足条件的情况下,原本播放的确定音效(play_system_sound(1))在满足条件时就变成取消音效了(play_system_sound(2))
之后要修改音效时,只要修改对应的条件即可

更进一步深究代码,我们可以研究一下 play_system_sound 的定义:
  1.   def self.play_system_sound(n)
  2.     $data_system.sounds[n].play
  3.   end
复制代码
$data_system.sounds 是一个由音效文件组成的数组, $data_system.sounds[n].play 在做的事情可以看成这个: RPG::SE.new('数据库中设置的音效文件名').play

因此,更加自由的修改方式是把代码改成这样:
  1. class << Sound  
  2.   def play_ok
  3.     if 条件
  4.       RPG::SE.new('要修改的音效文件名').play
  5.     else
  6.       play_system_sound(1)
  7.     end
  8.   end
  9. end
复制代码
当然,比较激进的修改方法是这么做:
  1. $data_system.sounds[n] = RPG::SE.new('音效文件')
复制代码
这么做的优点在于,只要在事件脚本中执行了这句代码以后就能立刻生效,不像上面的方法那样需要再额外修改原生脚本,缺点则是这样的修改并不会保存进游戏的存档中,并且,由于刷新 $data_system 数据的 DataManager.init 只会在游戏开始时执行一次,对于 $data_system.sounds 是全局通用的,因此,在读取存档时,这里的修改会被同时带进到其他的存档中,只要游戏窗口没有关闭,这么做对于任何存档都会生效。
作者: sq333333    时间: 2015-12-29 09:21
大神在玩耍{:2_270:}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1