ここでは、Unity のプロジェクト作成から Live2D モデルが表示されるまでの手順を説明します。
SDK サンプルを利用したチュートリアルは こちら を参照してください。
◆用意するもの - Unity (Unity Pro でなくても構いません)
- Live2D ライブラリ (ダウンロードしたLive2D SDK の「lib」フォルダにある「Live2DUnity.dll」)
本来は、Live2Dのリソースは作成するモデルに応じてそれぞれ準備します。
ここではサンプルプロジェクトの「ハル」のリソースを使って説明をしていきます。
simple/Assets/Resources/
- haru.moc.bytes
- haru.1024/texture_00.png
- haru.1024/texture_01.png
- haru.1024/texture_02.png
◆プロジェクトの作成と下準備
新規プロジェクトを作成して、プロジェクトビューにフォルダを作成していきます。
プロジェクトビューで「Create」 → 「Folder」でフォルダを4つ作り、「Live2D」、「Resources」、「Scene」、「Scripts」とそれぞれ名前を変更します。
※注意
以下の説明では、SDK付属のモデルなどを使用しますが、
Unityの仕様により、以下の拡張子のファイルは、最後に".bytes"という拡張子をつけてください。
XXX.json → XXX.json.bytes
テクスチャー(.pngファイル)には必要ありません。
".bytes"という拡張子は、Unityエディターにインポートした際には表示されません。
ファイルを指定するパスも".bytes"は不要です。
※Unityエディター上で変更しても、元のファイルの拡張子は変更されないため、
この操作はUnityエディター上では行わなず、必ずエクスプローラーもしくはファインダーから行ってください。
「Live2D」フォルダに、 Live2D SDK の「lib」 フォルダにある 「Live2DUnity.dll」 をドラッグアンドドロップします。
「Resoures」フォルダに、 テクスチャの入った 「haru.1024」 フォルダと「haru.moc.bytes」 をドラッグアンドドロップします。
「Scripts」 フォルダを選択し、右クリックから Create>C# Script を選んで作成します。その後名前を変更しておきます。ここでは 「main 」 とします。
プロジェクトビューはこのようになります。
◆Live2Dモデルを表示するゲームオブジェクトの作成
メニューバーの 「GameObject>Create Empty」 で、空のゲームオブジェクトを作成します。
以下でLive2Dを表示させるためのスクリプトを設定していきます。 各設定の具体的な詳細はドキュメントを参照してください。
「main」 を 「GameObject」 にドラッグアンドドロップします。

「main」 を開き、以下のように変数を追加します。
- using UnityEngine;
- using System;
- using System.Collections;
- using live2d;
- public class main : MonoBehaviour {
- public TextAsset mocFile;
- public Texture2D[] textures;
-
private Live2DModelUnity live2DModel; -
-
- // Use this for initialization
- void Start () {
- }
-
- // Update is called once per frame
- void Update () {
- }
- }
Unityでは、publicを指定した変数はUnityエディターのInspectorに表示され、UnityのGUI上でその変数に入れる値や オブジェクトを指定することができます。
「main」 をセットした GameObject を選択し、Inspector タブのスクリプトの項目にある、「MocFile」 に 「haru.moc」 を、 「Textures」 に 「texture_00」 ~ 「texture_02」 をドラッグアンドドロップします。 最後に、 「GameObject」 の位置(Position)を、 X:-7 , Y:8 , Z:0 に設定します。
「main」 を再度開き、Start() 関数で Live2D のモデルの初期化を行います。
- void Start () {
- Live2D.init ();
-
- live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
-
for(int i = 0; i<textures.Length; i++) - {
- live2DModel.setTexture(i, textures[i]);
- }
- }
次に、MonoBehavioursクラスのオーバーライド関数である OnRenderObject() を作成し、 その中でモデルを表示する位置やサイズを設定します。 最後に、モデルの更新、描画を行う命令を追加します。
void OnRenderObject() { float modelWidth = live2DModel.getCanvasWidth(); Matrix4x4 m1=Matrix4x4.Ortho( 0, modelWidth, modelWidth, 0, -50.0f,50.0f); Matrix4x4 m2 = transform.localToWorldMatrix; Matrix4x4 m3 = m2*m1; live2DModel.setMatrix(m3); live2DModel.update(); live2DModel.draw(); }
※: Unity では、毎フレーム呼び出される基本的な関数として Update() が用意されていますが、 Live2Dのデフォルトで指定されている描画方式の仕様により、OnRenderObject() からLive2Dの 描画を呼び出してください。 Live2Dの更新はUpdate()からで構いません。
最終的なコードは以下のようになります。
using UnityEngine; using System; using System.Collections; using live2d; public class main : MonoBehaviour { public TextAsset mocFile; public Texture2D[] textures; private Live2DModelUnity live2DModel; // Use this for initialization void Start () { Live2D.init (); live2DModel = Live2DModelUnity.loadModel(mocFile.bytes); for(int i = 0; i<textures.Length; i++) { live2DModel.setTexture(i, textures[i]); } } // Update is called once per frame void Update () { } void OnRenderObject() { float modelWidth = live2DModel.getCanvasWidth(); Matrix4x4 m1=Matrix4x4.Ortho( 0, modelWidth, modelWidth, 0, -50.0f,50.0f); Matrix4x4 m2 = transform.localToWorldMatrix; Matrix4x4 m3 = m2*m1; live2DModel.setMatrix(m3); live2DModel.update(); live2DModel.draw(); } }
再生ボタンをクリックして、モデルが表示されれば完了です!
|
|
|