//:::::::::::::::::::::::::::::::::::::::::::::::::::::
    // PUBLIC FUNCTION
    //:::::::::::::::::::::::::::::::::::::::::::::::::::::
    // @Brief : Create
    // @Param : pMocFilePath        => Moc file path
    //        : pTexturePaths       => Texture paths
    //        : pMotionFilePaths    => Motion file paths
    //        : bFromResources      => From resources file
    //        : pParent             => Object parent
    public static KrLive2DModel Create(string pMocFilePath, string[] pTexturePaths, string[] pMotionFilePaths, bool bFromResources, Transform pParent = null)
    {
        GameObject pPrefab = KrResources.LoadDataInApp <GameObject>("Prefabs/Live2DModel");
        GameObject pObject = Instantiate(pPrefab);

        pObject.transform.SetParent(pParent);

        KrLive2DModel pLive2DModel = pObject.GetComponent <KrLive2DModel>();

        pLive2DModel.Initialize(pMocFilePath, pTexturePaths, pMotionFilePaths, bFromResources);

        return(pLive2DModel);
    }
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // PROTECTED FUNCTION
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // @Brief : Initialize
    // @Param : pData   => Character data
    protected override void Initialize(KrCharagekiUICharacterData pData)
    {
        base.Initialize(pData);
        string pMocPath = KrCharagekiDef.s_pASSET_BASE_PATH + string.Format(KrCharagekiDef.s_pLIVE2D_MCO_FILE_FORMAT, pData.GetCharacterId());

        string[] pTexturePaths = new string[KrCharagekiDef.s_pLIVE2D_MODEL_TEXTURES_FORMAT.Length];
        for (int sIndex = 0; sIndex < KrCharagekiDef.s_pLIVE2D_MODEL_TEXTURES_FORMAT.Length; sIndex++)
        {
            string pTexturePath = KrCharagekiDef.s_pASSET_BASE_PATH + string.Format(KrCharagekiDef.s_pLIVE2D_MODEL_TEXTURES_FORMAT[sIndex], pData.GetCharacterId());
            pTexturePaths[sIndex] = pTexturePath;
        }
        List <string> pMotions = new List <string>();

        m_MotionDic = new Dictionary <uint, string>();
        foreach (KeyValuePair <uint, string> pKeyValue in KrCharagekiDef.s_pLIVE2D_MOTION_FILE_DIC)
        {
            string pDataPath = KrCharagekiDef.s_pASSET_BASE_PATH + string.Format(pKeyValue.Value, m_pCharaData.GetCharacterId());
            m_MotionDic.Add(pKeyValue.Key, pDataPath);
            pMotions.Add(pDataPath);
        }

        m_pLive2DModel = KrLive2DModel.Create(pMocPath, pTexturePaths, pMotions.ToArray(), KrCharagekiDef.IsLoadingFromResources(), transform);
        Hide();
    }