查看: 4567|回复: 6

[已经解决] 如何在游戏中修改音效

[复制链接]

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2012-9-14 21:19:30 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我希望在游戏中修改战斗音效、确定音效之类的,请问如何实现……

啊啊,不是说打开数据库最后一页来修改,是说游戏进行到一半的时候修改确定键、光标移动的音效

哆啦菌

梦石
0
星屑
46
在线时间
795 小时
注册时间
2010-7-24
回帖
3507
发表于 2012-9-14 22:11:02 | 显示全部楼层
用脚本就可以了不过我家VA卸了。。。
随便看看
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

 楼主| 发表于 2012-9-14 22:14:30 | 显示全部楼层
fxwd 发表于 2012-9-14 22:11
用脚本就可以了不过我家VA卸了。。。

请问使用什么脚本呢?

点评

事件脚本,我对这方面不懂。。  发表于 2012-9-14 22:15
回复

使用道具 举报

梦石
0
星屑
125
在线时间
486 小时
注册时间
2007-5-27
回帖
788
发表于 2012-9-15 17:44:41 | 显示全部楼层
本帖最后由 紫苍焰 于 2012-9-15 17:52 编辑

……
不行,研制失败……

评分

参与人数 1星屑 -10 收起 理由
Mic_洛洛 -10 麻烦认真回复,请勿灌水!谢谢!.

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
40 小时
注册时间
2012-7-28
回帖
98
发表于 2012-9-15 18:18:01 | 显示全部楼层
貌似纯事件只能更改ME,SE,BGM。
不能更改光标音效。
脚本应该可以实现吧。
但是我是脚本盲。
只会事件。。

评分

参与人数 1星屑 +1 收起 理由
VIPArcher + 1 删错帖子了2333.请无视

查看全部评分

<
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

 楼主| 发表于 2015-12-28 17:44:50 | 显示全部楼层
本帖最后由 喵呜喵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 是全局通用的,因此,在读取存档时,这里的修改会被同时带进到其他的存档中,只要游戏窗口没有关闭,这么做对于任何存档都会生效。

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 听说喵呜今天下午很闲

查看全部评分

回复

使用道具 举报

梦石
0
星屑
878
在线时间
576 小时
注册时间
2010-6-26
回帖
709
发表于 2015-12-29 09:21:41 | 显示全部楼层
大神在玩耍{:2_270:}

点评

灌水请用点评功能  发表于 2015-12-29 09:38

评分

参与人数 1星屑 -1 收起 理由
VIPArcher -1 灌水请用点评功能

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部