Hexo主题美化 | 配置看板娘
安装插件与模型配置
前言:这是一篇基于hexo架构和的配置,主要使用了live2d插件实现看板娘功能,最终效果和左下角类似(左下角为进阶效果,进阶教程见文末链接)
安装live2d插件
在你博客的根目录打开git bash或cmd,输入以下指令以安装插件
1 | npm install --save hexo-helper-live2d |
选择模型并下载
1 | npm install --save live2d-widget-model-z16 |
其中packagename就是你要安装的模型,常见的模型见https://github.com/imuncle/live2d或[Eikanya/Live2d-model: Live2d model collection (github.com)](https://github.com/Eikanya/Live2d-model),这里有[模型预览地址](https://imuncle.github.io/live2d/),这里以为例live2d-widget-model-z16为例。
可选择的模型:
1 | live2d-widget-model-chitose |
修改主题配置文件
在Hexo主题_config.yml文件中添加以下内容:
1 | live2d: |
模型预览
素质三连
1 | hexo cl & hexo g hexo s |
添加文本框对话功能
以上只有基本功能,以下将做一些进阶的设置
浮现hitokoto文字
这里我们使用语句接口 | 一言开发者中心提供的api接口https://v1.hitokoto.cn,每天返回一句不同的话
在刚刚添加live2d的_config.yml中添加以下代码:
1 | live2d: |
这样就可以在看板娘上方显示文本框
自定义文本
解决方案
- 修改配置文件_config.yml
1 | live2d: |
这里的text 变量名是自定义的,和后面的config.dialog.text 对应即可
[Blogroot]\node_modules\live2d-widget\src\dialog\index.js
,添加函数
1 | function randomSelection(obj) { |
并添加对此函数的调用
1 | function createDialogElement(root) { |
webpack打包
3.1 在
live2d-widget
下安装webpack
包:npm install --save-dev webpack@3.10.0
注:
webpack
版本很重要,参考.\live2d-widget\package.json
3.2 命令行输入./node_modules/.bin/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 | dialog: |
传到index.js
中,使得config.dialog.enable
和config.dialog.hitokoto
都变为了true
因此
1 | function createDialogElement(root) { |
就调用了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的方法,这里就不加了。
修改为自己想要的live2d图像
选择想要的live2d形象
在完成上面的步骤之后,我们知道存放模型文件的地方就是你博客根目录下面的node_modules
中,例如上面的live2d-widget-model-z16
的位置就是[blog根目录]/node_modules/live2d-widget-model-z16
,现在我们在Eikanya/Live2d-model: Live2d model collection (github.com)找想要配置的角色,找到后下载即可。
然后我们观察到live2d-widget-model-z16中有两个东西,分别是assets
文件夹和package.json
文件,打开assets
文件我们注意一下里面的目录结构,然后在我们自己下载的模型文件中找到相似的目录结构的文件夹。
之后将具有相似结构的文件目录改名为assets
。另外再新建一个package.json
文件,这里面的内容直接将原来的复制一下就行,里面的名字信息改为你自己的模型名字。最后将assets
和package.json
合并为一个文件夹(名称为live2d-widget-model-模型名字
)放入node_modules
下面。最后修改根目录下面的_config.yml
中使用的模型地址为live2d-widget-model-模型名字
。
配置动作
Json配置 - Live2DViewerEX文档 (pavostudio.com)
问题:不知道模型建立的时候的区域ID,没办法设置hit_area
,js代码里也没有对于tap
的单独设置,因此只能把动作全部加到json
文件里
moc文件用二进制形式打开,发现都是用D_PSD_XXX
的形式命名的,就不知道哪个是头那个是身子。。
打包的文件已经用npm发布
可以用命令npm install live2d-widget-model-kasumi
安装