在Live2d上下载的资源模型是.cmox格式的,无法直接在unity内使用,需要在Cubism中导出成.moc文件。
1.将下载的.cmox资源直接拖入Cubism
2.导出的时候有2.0版本和3.0版本的,如图
随便哪个版本都OK,这里2.0和3.0的区别是,3.0版本导出以后的文件直接拖到unity里面会生成已有的prefab,然后模型的变量属性都可以直接在unity内就能观察到啦,不用在Cubism和unity之间来回切换。这里都可以开个testscene测试一下,我随便导了个2.0版本的。
导出以后就会生成.moc格式的文件
3.放到unit内加载可能看不到物体,需要把camera调成orthographic正交视觉,然后调整size和物体位置即可。
4.我们可以通过直接加载.moc文件载入live2d的资源,也可以把它们转换成.bytes文件再加载。
先载入命名空间,初始化以后定义变量来存储模型对象
//载入命名空间
usinglive2d;using live2d.framework;
View Code
voidStart()
{//初始化
Live2D.init();
}
View Code
private Live2DModelUnity live2dModel; //生成对象
View Code
然后思考,如果直接加载moc文件,首先我们需要获取到资源内文件的相对地址路径:
live2DModel = Live2DModelUnity.loadModel(Application.dataPath + ".moc文件的路径");
View Code
如果是用字节文件加载,这里在路径文件夹内先复制一份相对应的moc文件然后修改后缀,接着同样需要加载到文件:
TextAsset mocFile = Resources.Load(".bytes文件的路径");
live2DModel= Live2DModelUnity.loadModel(mocFile.bytes);
View Code
每次调用完live2d的资源以后需要释放资源:
Live2D.dispose(); //释放资源
View Code
接下来是与贴图建立联系,可以定义一个公有的Texture2D数组来存储live2d内的贴图资源:
public Texture2D[] textures;
View Code
初始化以后遍历就好了
for (int i = 0; i < textures.Length; i++)
{
live2DModel.setTexture(i, textures[i]);
}
View Code
5.画布+更新
private Matrix4x4 live2DCanvasPos; //建立画布
View Code
画布初始化:
float modelWidth =live2DModel.getCanvasWidth();
live2DCanvasPos= Matrix4x4.Ortho(0, modelWidth, modelWidth, 0, -50f, 50);
View Code
在update内更新模型状态:
voidUpdate () {
live2DModel.setMatrix(transform.localToWorldMatrix*live2DCanvasPos);
live2DModel.update();
}
View Code
最后绘图:
private voidOnRenderObject()
{
live2DModel.draw();
}
View Code