UserData
[最終更新日:2020/01/30]
概要
UserDataは、モデルのアートメッシュに設定されたユーザデータをUnity上で可視化する機能です。
ユーザデータはアートメッシュに対して任意のタグを付与できる機能で、SDK上で特殊な処理を行うアートメッシュを指定する場合などに活用できます。
ユーザデータの詳細については こちら をご覧ください。
Unity上でユーザデータを使用するには以下の手順を行います。
- .userdata3.jsonをパース
- アートメッシュにUserDataを設定
1. .userdata3.jsonをパース
.userdata3.jsonを、CubismUserData3Jsonを用いてパースします。
CubismUserData3Jsonについては こちら をご覧ください。
1 |
var userData3Json = CubismUserData3Json.LoadFrom(jsonString); |
.userdata3.jsonのパスは、.model3.jsonからもCubismModel3Jsonを用いて取得することができます。
取得できるパスは.model3.jsonからの相対パスです。
1 2 3 |
var userDataPath = modelJson.FileReferences.UserData; var jsonString = ((TextAsset)Resources.Load<TextAsset>(userDataPath)).text; |
CubismModel3Jsonの詳細については こちら をご覧ください。
パースした.userdata3.jsonから、アートメッシュのデータを取得します。
1 |
var drawableBodies = userData3Json.ToBodyArray(CubismUserDataTargetType.ArtMesh); |
2. アートメッシュにUserDataを設定
.userdata3.jsonから取得したユーザデータを、Prefabのアートメッシュに適用します。
アートメッシュにユーザデータの情報を付与するには、CubismUserDataTagを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Prefabのアートメッシュの参照を取得 var drawables = cubismModel.Drawables; for (var i = 0; i < drawables.Length; ++i) { var index = -1; for (var j = 0; j < drawableBodies.Length; ++j) { if (drawableBodies[j].Id != drawables[i].Id) { continue; } index = j; break; } if (index < 0) { continue; } // 既にCubismUserDataTagがアタッチされていれば使い回す var tag = drawables[i].gameObject.GetComponent<CubismUserDataTag>(); if (tag == null) { tag = drawables[i].gameObject.AddComponent<CubismUserDataTag>(); } // ユーザデータをCubismUserDataTagに設定 tag.Initialize(drawableBodies[index]); } |