Cubism SDK‎ > ‎多平台开发‎ > ‎Unity‎ > ‎Cs版‎ > ‎

创建项目

这里介绍从创建 Unity 项目到显示出 Live2D 模型的步骤。

SDK 样例的使用指南参照 这里 。

准备工作
  • Unity Unity Pro 之外的版本也可
  • Live2D 库 ( Live2D SDK 的「lib」文件夹中的「Live2DUnity.dll」,以及「Resources」文件夹
  • Live2D 资源
Live2D 资源应根据所使用的模型而有所不同。
这里使用样例中「haru」的资源来说明。


simple/Assets/Resources/
  • haru.moc.bytes
  • haru.1024/texture_00.png
  • haru.1024/texture_01.png
  • haru.1024/texture_02.png



创建项目和预先准备

新建项目,在 Project 视图新建文件夹。

点击 Project 视图的「Create」 → 「Folder」,新建 4个文件夹,分别命名为「Live2D」、「Resources」、「Scene」、「Scripts」。




导入 Live2D SDK 和资源

※注意
以下演示均使用了 SDK 中附属的模型,在 Unity 中使用自制模型时,带有以下扩展名的文件,应加上 ".bytes"。
XXX.moc    →    XXX.moc.bytes
XXX.json    →    XXX.json.bytes
XXX.mtn    →    XXX.mtn.bytes

贴图(.png 文件)不需要修改。
扩展名 ".bytes" 在 Unity Editor 中并不显示。

指定文件路径时也不需要加 ".bytes"。

※若在 Unity Editor 中添加,源文件的扩展名并不会改变
所以此操作一定要在 Explorer 或 Finder 中进行。



把 Live2D SDKlib里的「Live2DUnity.dll」和含有阴影文件的「shader」拖拽到项目的Live2D」文件夹中。
这里添加的阴影直接从 Live2D 库内引用,用户无需再设置。






把含有贴图的「haru.1024」文件夹和「haru.moc.bytes」拖拽到项目的「Resoures」文件夹中。






右击「Scripts」文件夹, 选择 
Create > C# Script ,新建脚本。

这里命名为 「main 」 。




Project 视图如下。







◆创建 GameObject 用于显示 Live2D 模型


点击菜单栏 「GameObject>Create Empty」 ,新建 GameObject






◆脚本的设定

接下来进行脚本设定。
各步具体设置请参考文档。


把「main」 拖拽到 「GameObject」中。





在「main」中添加变量,代码如下。

  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using live2d;
  5.  
  6. public class main : MonoBehaviour {
  7.         public TextAsset mocFile;
  8.         public Texture2D[] textures;
  9.        
  10.         private Live2DModelUnity live2DModel;
  11.        
  12.        
  13.         // Use this for initialization
  14.         void Start () {
  15.                
  16.         }
  17.                
  18.         // Update is called once per frame
  19.         void Update () {
  20.             
  21.         }
  22. }


在 Unity 中,public 变量会显示在 Unity Editor 的 Inspector 面板中, 并且在图形界面可直接更改变量的值和对象。

选择 GameObject ,把「haru.moc」拖拽到 Inspector 面板脚本项目的「MocFile」中,把 「texture_00」 ~ 「texture_02」拖拽到脚本项目的「Textures」中。
最后,把「GameObject」的 Position 值改为 X:-7 , Y:8 , Z:0 。





再次修改「main」,在 Start()  函数写 Live2D 模型初始化语句,代码如下。

  1.         void Start () {
  2.                
  3.                 Live2D.init ();
  4.                
  5.                 live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
  6.                
  7.                 for(int i = 0; i<textures.Length; i++)
  8.                 {
  9.                         live2DModel.setTexture(i, textures[i]);
  10.                 }
  11.         }
  12.        



然后,在 Update() 函数中,设置模型的位置和大小。代码如下。

  1.         void Update()
  2.         {
  3.                 float modelWidth = live2DModel.getCanvasWidth();
  4.                 Matrix4x4 m1=Matrix4x4.Ortho(
  5.                         0, modelWidth, modelWidth,
  6.                         0-50.0f, 50.0f);
  7.                 Matrix4x4 m2 = transform.localToWorldMatrix;
  8.                 Matrix4x4 m3 = m2*m1;
  9.                
  10.                 live2DModel.setMatrix(m3);
  11.                 live2DModel.update();
  12.         }


最后,写新函数 OnRenderObject() ,添加绘制模型的语句

  1.         void OnRenderObject()
  2.         {
  3.                 live2DModel.draw();
  4.         }

※:
Unity 中提供了 Update() 函数,可在每一帧调用绘图,但建议不要使用,而是从 OnRenderObject()  调用 Live2D 的默认绘制函数。

更新 Live2D 时可使用 Update() 。
具体内容请参照 关于绘图模式的设定 。



最终代码如下。

  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using live2d;
  5.  
  6. public class main : MonoBehaviour {
  7.         public TextAsset mocFile;
  8.         public Texture2D[] textures;
  9.  
  10.         private Live2DModelUnity live2DModel;
  11.  
  12.  
  13.         // Use this for initialization
  14.         void Start () {
  15.  
  16.                 Live2D.init ();
  17.  
  18.                 live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
  19.  
  20.                 for(int i = 0; i<textures.Length; i++)
  21.                 {
  22.                         live2DModel.setTexture(i, textures[i]);
  23.                 }
  24.         }
  25.  
  26.         // Update is called once per frame
  27.         void Update () {
  28.                 float modelWidth = live2DModel.getCanvasWidth();
  29.                 Matrix4x4 m1=Matrix4x4.Ortho(
  30.                         0, modelWidth, modelWidth,
  31.                         0-50.0f, 50.0f);
  32.                 Matrix4x4 m2 = transform.localToWorldMatrix;
  33.                 Matrix4x4 m3 = m2*m1;
  34.  
  35.                 live2DModel.setMatrix(m3);
  36.                 live2DModel.update();
  37.         }
  38.  
  39.         void OnRenderObject()
  40.         {
  41.                 live2DModel.draw();
  42.         }
  43. }

点击播放按钮,显示出模型即完成。


コメント