UserData

업데이트: 2020/01/30

개요

UserData는 모델의 아트메쉬에 설정된 사용자 데이터를 Unity에서 가시화하는 기능입니다.
사용자 데이터는 아트메쉬에 대해 임의의 태그를 부여할 수 있는 기능으로, SDK상에서 특수한 처리를 실시하는 아트메쉬를 지정하는 경우 등에 활용할 수 있습니다.

사용자 데이터에 대한 자세한 내용은 여기를 참조하십시오. 

Unity에서 사용자 데이터를 사용하려면 다음 절차를 수행하십시오.

  1. .userdata3.json 파싱
  2. 아트메쉬에 UserData 설정

1. .userdata3.json 파싱

.userdata3.json을 CubismUserData3Json을 사용하여 파싱합니다.
CubismUserData3Json에 대해서는 여기를 참조하십시오. 

var userData3Json = CubismUserData3Json.LoadFrom(jsonString);

.userdata3.json의 패스는 .model3.json에서 CubismModel3Json을 사용하여 취득할 수도 있습니다.
취득할 수 있는 패스는 .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]);
}
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.