static void CreateAnimatorController(Texture texture)
    {
        string assetPath = AssetDatabase.GetAssetPath(texture);

        SpriteDivider.Execute(assetPath, 3, 4);

        List <Sprite> sprites = AssetDatabase
                                .LoadAllAssetRepresentationsAtPath(assetPath)
                                .OfType <Sprite>()
                                .ToList();

        SimpleCharacterAnimatorControllerDefinition definition =
            new SimpleCharacterAnimatorControllerDefinition
        {
            ResulutPath          = string.Format("Assets/{0}.controller", texture.name),
            DefaultAnimationClip = CreateSpriteAnimationClip(
                true, "Default", 0.2F, sprites[0], sprites[1], sprites[2], sprites[1]),
            PinchAnimationClip = CreateSpriteAnimationClip(
                true, "Pinch", 0.2F, sprites[6], sprites[7], sprites[8], sprites[7]),
            HitAnimationClip = CreateSpriteAnimationClip(
                false, "Hit", 0.1F, sprites[3], sprites[4], sprites[5]),
            WalkAnimationClip = CreateSpriteAnimationClip(
                true, "Walk", 0.2F, sprites[9], sprites[10], sprites[11], sprites[10])
        };

        RuntimeAnimatorController animatorController =
            SimpleCharacterAnimatorControllerCreator.Create(definition);

        AssetDatabase.AddObjectToAsset(definition.DefaultAnimationClip, animatorController);
        AssetDatabase.AddObjectToAsset(definition.PinchAnimationClip, animatorController);
        AssetDatabase.AddObjectToAsset(definition.HitAnimationClip, animatorController);
        AssetDatabase.AddObjectToAsset(definition.WalkAnimationClip, animatorController);

        AssetDatabase.SaveAssets();
    }
예제 #2
0
    public static void DivideImages()
    {
        int horizontalCount = 3;
        int verticalCount   = 4;

        IEnumerable <Texture> targets = Selection.objects.OfType <Texture>();

        if (!targets.Any())
        {
            Debug.LogWarning("Please selecting textures.");
            return;
        }

        foreach (Texture target in targets)
        {
            string assetPath = AssetDatabase.GetAssetPath(target);
            SpriteDivider.Execute(assetPath, horizontalCount, verticalCount);
        }
    }
    static void TextureToAnimatiorController(string name)
    {
        CreateFolderIfNotExist(AssetsPath, ResourcesFolderName);
        CreateFolderIfNotExist(ResourcesPath, AnimatorControllerFolderName);

        string[] suffixArray  = new[] { "", "_1", "_2", "_3" };
        string[] texturePaths = suffixArray.Select(suffix => string.Format("CharacterImages/{0}/${1}{2}", name, name, suffix)).ToArray();

        foreach (var texturePath in texturePaths)
        {
            var imagePath = "Assets/Resources/" + texturePath + ".png";
            SpriteDivider.Execute(imagePath, 3, 4);
        }

        List <List <Sprite> > listOfSpriteList = texturePaths
                                                 .Select(texturePath => Resources.LoadAll <Sprite>(texturePath).ToList())
                                                 .ToList();

        ComplexCharacterAnimatorControllerCreator.CreateAnimatorController(new ComplexCharacterAnimatorControllerDefinition
        {
            AnimationClipDictionary = CreateDictionary(listOfSpriteList),
            ResulutPath             = string.Format("{0}/{1}.controller", AnimatorControllerPath, name)
        });
    }