Я создаю игру с большим количеством двумерных анимированных персонажей, представленных спрайтами.Я пытаюсь автоматизировать:
- Разделение спрайтов
- Создание анимационного клипа
- Создание контроллера переопределения аниматора
Я создал AssetPostprocessor и наOnPostprocessSprites (текстура Texture2D, спрайты Sprite []) я получаю хорошее число спрайтов.
Затем я попытался создать файл .anim следующим образом:
for (var y = 0; y < clips.Length; y++)
{
string clipName = "Animation-"+y;
AnimationClip animClip = new AnimationClip();
AnimationClipSettings animClipSett = new AnimationClipSettings();
animClip.frameRate = 25; // FPS
animClip.wrapMode = WrapMode.Default;
animClip.name = clipName;
animClipSett.loopTime = true;
EditorCurveBinding curveBinding = EditorCurveBinding.PPtrCurve("", typeof(SpriteRenderer), "m_Sprite");
ObjectReferenceKeyframe[] spriteKeyFrames = new ObjectReferenceKeyframe[clips[y].Length];
for (int i = 0; i < (clips[y].Length); i++)
{
spriteKeyFrames[i] = new ObjectReferenceKeyframe();
spriteKeyFrames[i].time = i;
spriteKeyFrames[i].value = sprites[i];
}
AnimationUtility.SetAnimationClipSettings(animClip, animClipSett);
AnimationUtility.SetObjectReferenceCurve(animClip, curveBinding, spriteKeyFrames);
if (!AssetDatabase.IsValidFolder("Assets/Character/Animations/" + textureName))
AssetDatabase.CreateFolder("Assets/Character/Animations", textureName);
AssetDatabase.CreateAsset(animClip, "Assets/Character/Animations/" + textureName + "/" + clipName + ".anim");
}
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
И затем я создалanimationOverrideController.
Но когда я использовал AnimationClip, ничего не произошло.Я попытался создать анимацию с помощью перетаскивания, и она работает ...
Я открыл два файла .anim и увидел:
В моем файле "script":
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 0}
- time: 1
value: {fileID: 0}
- time: 2
value: {fileID: 0}
- time: 3
value: {fileID: 0}
- time: 4
value: {fileID: 0}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
И в моем рабочем сгенерированном .anim у меня есть:
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 21300000, guid: 6b1a9fb476f720f4aa183bdb1edb88a3, type: 3}
- time: 1
value: {fileID: 21300002, guid: 6b1a9fb476f720f4aa183bdb1edb88a3, type: 3}
- time: 2
value: {fileID: 21300004, guid: 6b1a9fb476f720f4aa183bdb1edb88a3, type: 3}
- time: 3
value: {fileID: 21300006, guid: 6b1a9fb476f720f4aa183bdb1edb88a3, type: 3}
- time: 4
value: {fileID: 21300008, guid: 6b1a9fb476f720f4aa183bdb1edb88a3, type: 3}
- time: 5
value: {fileID: 21300010, guid: 6b1a9fb476f720f4aa183bdb1edb88a3, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
Кадры анимации, кажется, игнорируются при сериализации YML
Знаете ли вы, почему мой анимированный файл "script"не работает?