希望下次提问时你能够将自己的问题描述得更准确一些,要不是我玩过,否则还真听不懂你说的是什么意思……
我猜的你想说的是“如何在对话时自动播放音效”,但如果你没有语音的,并且这种音效每一句都不同的话,我更推荐你把它放在语音通道,因为renpy有原生的自动播放语音的方法,
参考文档:https://doc.renpy.cn/zh-CN/voice.html#automatic-voice
因为本人没有尝试制作过大量的语音自动匹配程序,所以只能给个大概的示例
首先,得在renpy项目gamer文件夹内任意.rpy文件中定义这一句:
[RenPy] 纯文本查看 复制代码 define config.auto_voice = "voice/{id}.ogg"
双引号里的是你所有语音文件的相对位置,然后将文件名的位置上写成{id},最后面的是文件后缀。
然后,在启动器上选择“提取对话”,“以制表符分隔的表格 (dialogue.tab)”,“继续”。然后会生成一个文件——dialogue.tab,使用表格程序打开。
接着,你就需要根据.tab文件中每一句对话的标识符,去修改你文件夹里的所有语音文件,将其改成和你对话标识符一样的文件名。
进入游戏后,你所写的所有对话都会自动播放语音了。
当然,如果你想要的是每一句对话都自动播放相同的音效,那么你可以使用角色回调函数,更加简单,
参考文档:https://doc.renpy.cn/zh-CN/chara ... character-callbacks
这里使用一下文档中的例子:
[RenPy] 纯文本查看 复制代码 define test_cha = Character("test_cha",callback=test_def)
init python:
def test_def(event,interact=True):
# 如果没有触发互动则不播放音效
if not interact:
return
# 显示了一段对话时播放音效
if event == "show_done":
renpy.sound.play("sound/sound_0001.ogg")
# 在慢速播放完毕后停止播放音效
elif event == "slow_done":
renpy.sound.stop()
label start:
test_cha "我在说话时会自动播放音效。"
test_cha "但如果我说话时没有触发互动,则不会播放音效。"
这样应该能满足你的需要了 |