我正在Unity中使用增强的Reality项目,用户可以在将相机指向某个图像时在手机上看到动画精灵 .

雪碧将由一位比利时漫画家创作,并且会非常冗长 . 为了让我的生活更轻松,我想创建一个编辑器脚本,它从Resources / Sprite文件夹中获取所有精灵并创建一个AnimationClip .

Sprite[] sprites = Resources.LoadAll<Sprite>("sprite");
    AnimationClip animClip = new AnimationClip();
    animClip.frameRate = 25; // fps


    EditorCurveBinding spriteBinding = new EditorCurveBinding();
    spriteBinding.type = typeof(SpriteRenderer);
    spriteBinding.path = "";
    spriteBinding.propertyName = "m_Sprite";

    ObjectReferenceKeyframe[] spriteKeyFrames = new ObjectReferenceKeyframe[sprites.Length];
    for (int i = 0; i < (sprites.Length); i++)
    {
        spriteKeyFrames[i] = new ObjectReferenceKeyframe();
        spriteKeyFrames[i].time = i / animClip.frameRate;
        spriteKeyFrames[i].value = sprites[i];
    }
    AnimationUtility.SetObjectReferenceCurve(animClip, spriteBinding, spriteKeyFrames);

    AnimationClipSettings animClipSett = new AnimationClipSettings();
    animClipSett.loopTime = true;

    AnimationUtility.SetAnimationClipSettings(animClip, animClipSett);

    AssetDatabase.CreateAsset(animClip, "assets/generated.anim");
    AssetDatabase.SaveAssets();
    AssetDatabase.Refresh();

这样可以创建一个AnimationClip,但在动画面板中使用它时没有任何反应 .

我手动制作相同的动画,看看是否可行,但确实如此 .

动画面板中的蓝色条移动了

Animator Panel显示生成的AnimationClip:

enter image description here

我发现的唯一值得注意的差异(除了其中一个播放而另一个没有)是生成的剪辑的长度在尝试运行它的动画后变为0

Sprite对象和检查器:

enter image description here

我现在一直在试图找到我做错了半天而没有再靠近一步 .

我想提前感谢谁回答这个问题 .

问候,

Maethorian