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