Unity Live2D SDK的使用方法(一)——载入资源

0.文件类型说明

.cmox文件:Live2D制作工具Cubism的工程文件格式。
.moc文件:Unity可以直接用的文件格式,将.cmox文件载入Cubism后导出获得。
.bytes文件:二进制文件,Unity另一种可用的文件格式。可以将.moc文件在其后增添扩展名.bytes后得到。

1.初始化模型

1.1载入资源

Step1:载入Live2D的命名空间。

    using live2d;

Step2:进行初始化

    Live2D.init();

要使用Live2D必须先进行初始化操作。
初始化只能进行一次,不能重复进行。

Step3:载入资源

先定义一个私有变量用于储存live2d对象。
在Unity中为Live2DModelUnity对象

    private Live2DModelUnity live2DModel;

然后有两种方式可以载入资源:

  • 加载.moc文件
live2DModel = Live2DModelUnity.loadModel(Application.dataPath + ".moc文件的路径");
  • 加载.bytes文件
TextAsset mocFile = Resources.Load(".bytes文件的路径");
live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);

当然也可以用public一个TextAsset变量,将其暴露出来来直接获取.bytes文件的引用。

StepN:释放资源

    Live2D.dispose();

释放会释放掉所有live2d占用的资源。
在释放之后可再次进行初始化。

1.2与贴图建立关联

因为一个Live2D所需要用到的贴图数量是不定的。
所以需要先定义一个数组:

    public Texture2D[] textures;

然后,在初始化之后,进行贴图关联

    for (int i = 0; i < textures.Length; i++)
    {
        live2DModel.setTexture(i, textures[i]);
    }

Live2DModelUnity 对象的.setTexture有两个参数:(编号,图片)
编号从0开始。每个编号对应一张图片。

1.3指定显示位置与尺寸

Step1:建立画布

    private Matrix4x4 live2DCanvasPos;

Step2:进行指定

    float modelWidth = live2DModel.getCanvasWidth();
    live2DCanvasPos = Matrix4x4.Ortho(0, modelWidth, modelWidth, 0, -50f, 50);

Step3:对摄像机进行设置

将摄像机调整为正交模式。

2.更新模型状态

Step1:在Update中更新

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

Step2:绘图

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

Step3:调整

至此,运行游戏已可以看见人物的显示了。
通过调整Camera中的size来进行人物大小缩放的调节。
对人物的节点进行移动来调整人物的位置。

以下为全部代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using live2d;

public class Live2Dmodel : MonoBehaviour {

    public TextAsset modelFile;
    public Texture2D[] textures;

    private Live2DModelUnity live2DModel;
    private Matrix4x4 live2DCanvasPos;

	// Use this for initialization
	void Start () {
        //初始化
        Live2D.init();

        //释放
        //Live2D.dispose();

        //加载资源
        //Live2DModelUnity.loadModel(Application.dataPath + "/Resources/Epsilon/runtime/Epsilon.moc");
        live2DModel = Live2DModelUnity.loadModel(modelFile.bytes);

        //与贴图建立关联
        for (int i = 0; i < textures.Length; i++)
        {
            live2DModel.setTexture(i, textures[i]);
        }

        //指定显示位置与尺寸
        float modelWidth = live2DModel.getCanvasWidth();
        live2DCanvasPos = Matrix4x4.Ortho(0, modelWidth, modelWidth, 0, -50f, 50);
    }
	
	// Update is called once per frame
	void Update () {

        live2DModel.setMatrix(transform.localToWorldMatrix*live2DCanvasPos);

        live2DModel.update();
	}


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

}

你可能感兴趣的:(Unity,Live2D,Unity)