开发笔记 | 实现人物立绘的差分效果
当这为了将人物的表情与动作更加贴近剧情,于情于理都不应该采用原来一个人物绑定一个立绘的方法。本篇文章将会实现人物立绘自定义的功能,来帮助实现人物立绘的差分效果。
视觉小说对话系统系列:篇一,篇二。
制作过程
在上一篇开发笔记中,我们使用观察者模式来管理对话音频管理器,通过让用户自定义音频的方式来添加内容。那么在立绘的更新上我们依旧可以采取这样的方式,让用户来决定什么时机更换什么立绘。
我这里准备了优香的插画立绘集,所以按照之前的步骤调整场景(我依旧小写了一段故事ᕕ(◠ڼ◠)ᕗ)。
然后准备好为师写的这段还算精彩的对话ᕕ(◠ڼ◠)ᕗ。
在Unity中将背景与立绘调整至合适的位置,按照之前的说明对应好人物。
编写一个观察者的接口用来统一操作。
同时将之前主题类(DialogueManager)所维护的观察者更新为观察者列表。
然后编写立绘管理器脚本TachieManager(之前用的是Portrait,但似乎Tachie才是正确的),继承MonoBehaviour和刚刚的接口。
在正式编写脚本内容之前,我们需要把原先更新立绘的方法给删除掉,这些方法和对话的更新杂糅在一起,可维护性非常差。
而且目前我们的Character类的功能只有对应立绘,所以我们可以暂且把Character列表注释掉。
同上次的音频对话类一样,我们建立一个TachieDialogue类,用来其中要包含对话的索引、立绘、是否打开阴影的成员。
然后编辑管理器脚本。
同样,我们维护一个对话立绘列表,方便用户操作。同时添加更新编辑器元素的生命周期方法。
按照对话的条数输入元素数量。默认元素几就对应对话行索引几,按照我们的想法依次拖入立绘。
加上立绘更新的语句,这样一来角色的变化就成功实现了。
然后之前的人物类就可以改成这样,因为存在主人公这样的没有立绘的角色,不能显示头像。
在检查器中一一对应调整好,我们的人物立绘的差分效果就完成了。
结果演示
来看一下最终效果吧。
对话系统测试-优香
小结
按照惯例,我同样在github上发布了对话系统最新的导出包,导入进Unity即可查看源文件以及使用这个对话系统,点击即可进入github页面进行下载哦。
如有补充交流欢迎留言,我们下次见。
参考列表:
语音:GPT-Sovits V4推理特化一键包(bilibili):BV1j7TszYE27
GPT-Sovits开发者:@花儿不哭
模型训练者:@红血球AE3803 @白菜工厂1145号员工
立绘:优香 -睡衣-(ユウカ)(bilibili图文):@小沫不是末