2024-02-19 在unity编辑器中通过代码创建Rawimage的动画片段

using System.Collections.Generic;
using System.IO;
using System.Linq;

using UnityEditor;

using UnityEngine;
using UnityEngine.UI;

namespace WX
{
    /// <summary>
    /// 动画工具
    /// </summary>
    public class AnimationUtility
    {
        [MenuItem("Assets/EditorTools/GenerateTextureAnimation")]
        private static void GenerateTextureAnimation()
        {
            string outputFodler = "Assets/Animations";
            if (!Directory.Exists(outputFodler))
            {
                Directory.CreateDirectory(outputFodler);
            }
            CreateTextureAnimation(Selection.GetFiltered<Texture2D>(SelectionMode.DeepAssets), outputFodler + "/anim.anim");
        }
        private static void CreateTextureAnimation(IList<Texture2D> frames, string outputPath)
        {
            AnimationClip clip = new AnimationClip();
            var curveBinding = new EditorCurveBinding();
            curveBinding.type = typeof(RawImage);
            curveBinding.path = "";
            curveBinding.propertyName = "m_Texture";

            frames = frames.OrderBy(i => i.name).ToList();
            int count = frames.Count;
            float time = 1f / count;
            clip.frameRate = count;
            ObjectReferenceKeyframe[] objectReferenceKeyframes = new ObjectReferenceKeyframe[count];
            for (int i = 0; i < count; i++)
            {
                ObjectReferenceKeyframe keyframe = new ObjectReferenceKeyframe();
                keyframe.time = time * i;
                keyframe.value = frames[i];
                objectReferenceKeyframes[i] = keyframe;
            }
            UnityEditor.AnimationUtility.SetObjectReferenceCurve(clip, curveBinding, objectReferenceKeyframes);
            AssetDatabase.CreateAsset(clip, outputPath);
            AssetDatabase.SaveAssets();
        }
    }
}

在Project面板中选择图片文件夹,点击右键,在弹出的菜单中点击EditorTools/GenerateTextureAnimation命令


在编辑器中通过命令生成动画文件

执行完成后,即可生成动画文件


生成的动画

双击生成的动画文件,可以预览效果
预览效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容