-
Notifications
You must be signed in to change notification settings - Fork 89
Voice
woctordho edited this page Feb 9, 2025
·
13 revisions
- 按角色创建中的说明创建角色的game object
- 在角色的game object的
GameCharacterControllercomponent中,将voiceFolder设成角色语音所在的文件夹 - 在
AudioVolumeReadercomponent中:- 如果不需要给每个角色分别设置音量,就把
secondaryConfigKeyName留空 - 如果需要:
- 把
secondaryConfigKeyName改成对应的名字(如XiaomingVoice) - 在
Assets/Nova/Settings/Definitions.json中增加这个设置项 - 在
Assets/Resources/LocalizedStrings/ChineseSimplified.json和其他语言的版本中增加这个设置项的翻译 - 在设置界面的UI中增加这个设置项,并把
Slidergame object的ConfigFloatSlidercomponent中的configKeyName改成对应的名字
- 把
- 如果不需要给每个角色分别设置音量,就把
如果有很多路人角色,可以让他们共用一个GameCharacterController。
- 按角色创建中的说明创建一个角色,
luaGlobalName设为other,voiceFolder设为Other,不需要立绘 - 把路人甲的语音文件放在
Resources/Voices/Other/Lurenjia文件夹中的001.ogg, 002.ogg, ...,路人乙的语音文件则放在Resources/Voices/Other/Lurenyi文件夹中的001.ogg, 002.ogg, ... - 在脚本中用
say(other, 'Lurenjia/001')播放路人甲的语音
如果角色的语音很多,自动语音功能可以让你不用在脚本里给每句语音写一句say。
- 把每个角色的语音文件放在各自的文件夹里,把文件名设为语音的编号
- 每个角色的语音分开编号,比如王二宫的语音是
Resources/Voices/Ergong文件夹中的001001.ogg, 001002.ogg, ...,张浅野的语音则是Resources/Voices/Qianye文件夹中的001001.ogg, 001002.ogg, ... - 我们一般会把不同章节的语音分开编号,比如王二宫在第一章的语音是
001001.ogg, 001002.ogg, ...,第四章的语音则是004001.ogg, 004002.ogg, ...
- 每个角色的语音分开编号,比如王二宫的语音是
- 在
Charactersgame object的AutoVoicecomponent中,设置每个角色的自动语音配置-
characterName是文本中的角色名称(如王二宫),而不是Lua变量名(如ergong) - 如果文本中设置了角色的显示名称和内部名称(如
ch2.txt中的???//张浅野),而characterName设为内部名称(张浅野),那么这条对话也会播放自动语音 -
prefix是语音文件名中编号之前的字符串,比如文件名是a001001.ogg, a001002.ogg, ...,就应该把prefix设为a
-
- 设置
padWidth,就是语音文件名中的编号左边补零之后,整个编号的长度 - 在脚本每个节点的第一条对话中开启或关闭每个角色的自动语音,如
auto_voice_on('王二宫', 001001)- 如果所有角色很多,而一段剧情中说话的角色比较少,可以先用
auto_voice_off_all()关闭所有角色的自动语音,再开启需要的角色
- 如果所有角色很多,而一段剧情中说话的角色比较少,可以先用
也可以把一个角色的语音按章节放到子文件夹里:
- 比如王二宫在第一章的语音是
Resources/Voices/Ergong/ch1文件夹中的001.ogg, 002.ogg, ...,第二章则是Resources/Voices/Ergong/ch2文件夹中的001.ogg, 002.ogg, ... - 在
AutoVoicecomponent中,把padWidth设为3 - 在脚本的第一章中用
auto_voice_on('王二宫', {'ch1/', 001}),就会把王二宫的Prefix改为ch1/,之后会播放ch1/001.ogg, ch1/002.ogg, ...等文件