Live2D for Unity入门篇 4x
一直都想转型U3D,然后都因为各种原因没有落实。
这次疫情原因,需要重新找工作,然后有一个机会可以转U3D开发。所以重新拿起来,希望能抓住这个机会,项目是二次元向,所有需要用到Live2D。
上次自学过一段时间U3D,但是已经比较久远了。久远到这次回来重新使用,发现变化还蛮大的。
具体的U3D安装啥的,没啥难度,直接官网下载就行了。但是不得不说,现在用的这个Unity Hub真心不太好用,经常出各种小问题,目前的解决方案就是卸载了然后重新安装。(可能是因为不熟悉,后面熟悉了应该会好很多。重心不在这,所以不过多纠结)。
然后再说到Live2D,这 玩意儿不清楚的可以直接百度,或者谷歌。去Live2D官网查看相关消息。
www.live2d.com
我这次用到的是Live2D for Unity 也就是Live2D的Unity版本。现在官网最新的版本已经到了4.0。网上找了一些相关的教程来看,发现基本都是2.0的。有一些流程和4.0差异比较大。
然后在官网寻找教程,发现还是这个靠谱。
https://docs.live2d.com/cubism-sdk-tutorials/hittest/
具体可以查看这个链接。不过有一点,官网的这个翻译,一言难尽。(~ ̄▽ ̄)~
相比较2.0版本,最新的4.0优化了好多步骤。
新建一个c#文件,命名为Live2DModel。具体代码如下:
using System;
using System.IO;
using UnityEngine;
using Live2D.Cubism.Framework.Json;
public class Live2DModel : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
var path = Application.streamingAssetsPath + "/koharu/koharu.model3.json";
var model3Json = CubismModel3Json.LoadAtPath(path,BuiltinLoadAssetAtPath);
var model = model3Json.ToModel();
}
// Update is called once per frame
void Update()
{
}
public static object BuiltinLoadAssetAtPath(Type assetType,string absolutePath)
{
if(assetType == typeof(byte[])){
return File.ReadAllBytes(absolutePath);
}else if(assetType == typeof(string)){
return File.ReadAllText(absolutePath);
}else if(assetType == typeof(Texture2D)){
var texture = new Texture2D(1,1);
texture.LoadImage(File.ReadAllBytes(absolutePath));
return texture;
}
return new NotSupportedException();
}
}
具体可以查看官方文档。
然后将文件挂载到一个空的GameObject上面。直接运行之后就会看到模型已经显示在场景上了。
在这期间遇到一个特别坑的问题。代码编辑器使用的IDE是VSCode,没有代码补全,提示是找打不到对应的.net framework版本。项目默认的版本是V4.1.1。尝试了以下方法:
- 从微软官方下载对应的开发者版本,因为系统无法卸载高级版本,但是我们可以安装多版本。(当然也有方法可以卸载,但是容易出现问题,不建议)
- 直接修改项目中Assembly- XXX文件 中的TargetFramworkVersion的版本。但是这个版本会自动覆盖,而且手动更改好像也无效。
- 百度的各种其他乱七八糟的方法。
最后实在没办法的情况下,下载了Visual Studio 2017来作为IDE,结果没想到安装好了之后,VSCode也好了。暂时还没有确定问题到底在哪儿。
自此,Live2D的入门也就完成了。下一步是动作文件的处理。