Unity-Live2D资源载入


在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文件再加载。

先载入命名空间,初始化以后定义变量来存储模型对象

//载入命名空间
using live2d;
using live2d.framework;
View Code
 void Start()
    {
        //初始化
        Live2D.init();
    }
View Code
private Live2DModelUnity live2dModel;    //生成对象
View Code

 

然后思考,如果直接加载moc文件,首先我们需要获取到资源内文件的相对地址路径:

live2DModel = Live2DModelUnity.loadModel(Application.dataPath + ".moc文件的路径");
View Code

如果是用字节文件加载,这里在路径文件夹内先复制一份相对应的moc文件然后修改后缀,接着同样需要加载到文件:

TextAsset mocFile = Resources.Load<TextAsset>(".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内更新模型状态:

void Update () {
        live2DModel.setMatrix(transform.localToWorldMatrix*live2DCanvasPos);
        live2DModel.update();
    }
View Code

最后绘图:

private void OnRenderObject()
    {
        live2DModel.draw();
    }
View Code

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM