public static void Init()
        {
            unitAnimMeshListDic      = new Dictionary <ECS_UnitAnim, List <Mesh> >();
            unitAnimDictionaryKeyDic = new Dictionary <DictionaryKey, ECS_UnitAnim>();

            foreach (ECS_UnitAnimType ecsUnitAnimType in ECS_UnitAnimType.GetUnitAnimTypeList())
            {
                foreach (UnitAnim.AnimDir animDir in System.Enum.GetValues(typeof(UnitAnim.AnimDir)))
                {
                    ECS_UnitAnim ecsUnitAnim = ecsUnitAnimType.GetUnitAnim(animDir);
                    unitAnimDictionaryKeyDic[new DictionaryKey {
                                                 ecsUnitAnimTypeEnum = ecsUnitAnimType.GetTypeEnum(),
                                                 animDir = animDir
                                             }] = ecsUnitAnim;

                    unitAnimMeshListDic[ecsUnitAnim] = new List <Mesh>();

                    int frameCount = ecsUnitAnim.GetFrameCount();

                    for (int i = 0; i < frameCount; i++)
                    {
                        Mesh mesh = ECS_Animation.CreateMesh(ecsUnitAnim, i);
                        unitAnimMeshListDic[ecsUnitAnim].Add(mesh);
                    }
                }
            }
        }
        public static Skeleton_Data GetSkeletonData(ECS_UnitAnimType.TypeEnum ecsUnitAnimTypeEnum, UnitAnim.AnimDir animDir, Skeleton_Anim_OnComplete onComplete)
        {
            ECS_UnitAnimType ecsUnitAnimType = ECS_UnitAnimType.Get(ecsUnitAnimTypeEnum);
            ECS_UnitAnim     ecsUnitAnim     = ecsUnitAnimType.GetUnitAnim(animDir);

            return
                (new Skeleton_Data {
                frameCount = ecsUnitAnim.GetFrameCount(),
                currentFrame = 0,
                loopCount = 0,
                frameTimer = 0f,
                frameRate = ecsUnitAnim.GetFrameRate(),
                activeUnitAnimTypeEnum = ecsUnitAnimTypeEnum,
                activeAnimDir = animDir,
                onComplete = onComplete,
            });
        }