Hexo美化|站宠?看板娘?live2d配置(附魔改插件和新模型)
效果⁍
见本站右下角
实现目标⁍
- 采用
hexo-helper-live2d
插件实现,参考 hexo live2d插件 2.0 ! | 幻想帖 (huaji8.top) - 配置添加对话/文字功能
- 修改为自己想要的live2d形象(Eikanya/Live2d-model: Live2d model collection (github.com),梦象 (paul.ren))
- 和音乐播放器合在一起?(暂不考虑)
hexo-helper-live2d
插件安装与配置⁍
EYHN/hexo-helper-live2d: Add the Sseexxyyy live2d to your hexo! (github.com)
安装插件⁍
在站点根目录下打开终端,输入以下命令
1 |
|
选择并安装模型⁍
1 |
|
更多模型见hexo live2d插件 2.0 ! | 幻想帖 (huaji8.top)
配置⁍
打开站点配置文件_config.yml
,添加live2d项,如下
1 |
|
然后hexo cl&&hexo g&&hexo s
就可以在localhost:4000
上预览效果啦
添加文字框功能⁍
浮现hitokoto文字⁍
语句接口 | 一言开发者中心 (hitokoto.cn)简而言之就是提供了一个api接口https://v1.hitokoto.cn,可以返回一句话
参考关于waifu-tips.js · Issue #137 · EYHN/hexo-helper-live2d (github.com)
其实再简单不过,就是在_config.yml
中添加几行文字:
1 |
|
就可以将hitokoto上的一句话显示在你的live2d形象上方

一些蠢事带来的js脚本调试的尝试记录⁍
改完配置之后,设置迟迟没有生效,看了看几个主要的脚本似乎也没什么问题,于是本人初尝了以下js调试。(省略一些绕弯路的步骤)
hexo s
之后,打开localhost:4000
打开开发者模式-源代码,(省略一些搜索
dial..
的步骤),打开了webpack://./src/utils/elementMgr.js
文件(也不一定是这个)设置断点,刷新
鼠标放在
config
上,同志们。。我打错变量名了。。是dialog
不是dialogue
被自己蠢到,但也算尝试了一下调试的基础。。嗯。。
自定义文本⁍
解决方案⁍
-
修改配置文件
_config.yml
yml1
2
3
4
5
6
7
8
9live2d:
enable: true # 是否启用看板娘
dialog:
enable: true
# hitokoto: true
text:
- 汪
- 汪汪
- 汪呜这里的
text
变量名随便起,只要跟后面的config.dialog.text
对应即可 -
[Blogroot]\node_modules\live2d-widget\src\dialog\index.js
,添加函数javascript1
2
3
4
5
6
7
8
9
10
11
12
13function randomSelection(obj) {
return Array.isArray(obj) ? obj[Math.floor(Math.random() * obj.length)] : obj;
}
function showMessage(text, timeout, priority) {
if (!text || (sessionStorage.getItem("mytext") && sessionStorage.getItem("mytext") > priority)) return;
text = randomSelection(text);
sessionStorage.setItem("mytext", priority);
alertText(text)
setTimeout(() => {
sessionStorage.removeItem("mytext");
}, timeout);
}并添加对此函数的调用
javascript1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function createDialogElement(root) {
// ......
if (config.dialog.hitokoto)
showHitokotoLoop()
else //从这里开始增加
setInterval(() => {
showMessage(randomSelection(config.dialog.text), 4000, 9);
}, 10000)//增加了这一行
}
//......
module.exports = {
createDialogElement, displayDialog, hiddenDialog, alertText, showHitokotoLoop, showMessage, randomSelection
} -
webpack打包
-
成功啦
过程:阅读源码并修改⁍
关于waifu-tips.js · Issue #137 · EYHN/hexo-helper-live2d (github.com)这个issue中并没有提及如何自定义文本的问题,于是就先来读一读源码
有关对话框的源代码在[Blogroot]\node_modules\live2d-widget\src\dialog\index.js
下
_config.yml
里的设置经过一系列传参到index.js
中,变成了config
对象
当你按下述设置时,
1 |
|
传到index.js
中,使得config.dialog.enable
和config.dialog.hitokoto
都变为了true
因此
1 |
|
就调用了showHitokotoLoop()
函数,因此我们首先要做的是将hitokoto: true
改为false
,由于默认值就是false
(见.\live2d-widget\src\index.js
注释和.\live2d-widget\src\config\defaultConfig.js
的默认设置),因此删掉这句话就可以了
我们知道函数showHitokotoLoop()
调用了alertText(text)
函数,将data.hotokoto
当作text
参数传入
因此如果要自定义文本,只需要将我们的文本作为text
传入即可
于是开始魔改(x),见上一小节
参考了live2d-widget/waifu-tips.js at master · stevenjoezhang/live2d-widget · GitHub
事实上可以看看butterfly
主题中对subtitle
的处理,还可以增加调用其他api的方法,这里就不加了。
原项目archived了,所以大家看着改改就好,重要的是方法
修改为自己想要的live2d图像⁍
选择想要的live2d形象⁍
这里在Eikanya/Live2d-model: Live2d model collection (github.com)中进行选择
众所周知,邦邦有邦邦人制作的神器 Live2D浏览器 | Bestdori! BanG Dream 少女乐团派对的最佳资源库,可以查看相应活动的live2d形象
方法一:可以在上面的github库中的邦邦文件夹的1~35分别代表的各个角色,比如户川香澄就是1,
[001_live_event_102_ssr](https://github.com/Eikanya/Live2d-model/tree/master/BanG Dream!/asneeded/live2d/chara/001/001_live_event_102_ssr)
就是第102次活动的ssr卡方法二:该github库到炮姐联动之后就没有更新了,但是我们有bestdori!在 Live2D浏览器中点击左上角可以直接获得卡面路径
然后去数据包浏览器里找到相应路径就可以下载了,是不是很简单,快去试试吧!
配置动作⁍
Json配置 - Live2DViewerEX文档 (pavostudio.com)
问题:不知道模型建立的时候的区域ID,没办法设置hit_area
,js代码里也没有对于tap
的单独设置,因此只能把动作全部加到json
文件里
moc文件用二进制形式打开,发现都是用
D_PSD_XXX
的形式命名的,就不知道哪个是头那个是身子。。
打包的文件已经用npm发布
可以用命令npm install live2d-widget-model-kasumi
安装
后续⁍
这个插件功能还是弱了一点,因为本人对js也不是特别数,后面可能会对项目stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platform (github.com)魔改