UserData

最終更新: 2020年1月30日

概述

UserData是一个在Unity上可视化模型图形网格中设置的用户数据的功能。
用户数据是允许您将任意标签添加到图形网格的功能,并且可以在指定对SDK执行特殊处理的图形网格等时使用。

参考 此处 了解有关用户数据的详细信息。

要在Unity上使用用户数据,请按照以下步骤操作。

  1. 解析.userdata3.json
  2. 在图形网格中设置UserData

1. 解析.userdata3.json

使用CubismUserData3Json解析.userdata3.json。
关于CubismUserData3Json,请参考 此处。 

var userData3Json = CubismUserData3Json.LoadFrom(jsonString);

.userdata3.json的路径也可以使用CubismModel3Json从.model3.json中获取。
可以获取的路径是来自.model3.json的相对路径。

var userDataPath = modelJson.FileReferences.UserData;

var jsonString = ((TextAsset)Resources.Load<TextAsset>(userDataPath)).text;

参考 此处 了解有关CubismModel3Json的更多信息。

从解析的.userdata3.json中获取图形网格数据。

var drawableBodies = userData3Json.ToBodyArray(CubismUserDataTargetType.ArtMesh);

2. 在图形网格中设置UserData

将从.userdata3.json获得的用户数据应用到Prefab的图形网格。

使用CubismUserDataTag将用户数据信息添加到图形网格。

// 获取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]);
}
关于本报道,敬请提出您的意见及要求。