Задать вопрос
PragmaGames
@PragmaGames
Увлекаюсь Unity.

Как изменить импортированный ассет (анимацию) через код?

Для примера у меня есть вот такой ассет
6692aa492fd05307426201.png
Я хочу найти все анимации и заменить int параметр всем ивентам
public abstract class ScriptableStringHasher : ScriptableObject, IStringHasher
    {
        public abstract int GetHash(string value);

#if UNITY_EDITOR
        [Button(ButtonStyle.FoldoutButton)]
        public void DoHash(AnimationClip animationClip)
        {
            var events = AnimationUtility.GetAnimationEvents(animationClip);
            
            foreach (var @event in events)
            {
                @event.intParameter = GetHash(@event.stringParameter);
            }

            AnimationUtility.SetAnimationEvents(animationClip, events);
            EditorUtility.SetDirty(animationClip);
            AssetDatabase.SaveAssetIfDirty(animationClip);
        }

        [Button(ButtonStyle.FoldoutButton)]
        public void DoHash(AnimatorController animatorController)
        {
            foreach (var animationClip in animatorController.animationClips)
            {
                DoHash(animationClip);
            }
            
            EditorUtility.SetDirty(animatorController);
        }
        
        [Button(ButtonStyle.FoldoutButton)]
        public void DoHash(Object asset)
        {
            var assetPath = AssetDatabase.GetAssetPath(asset);
            var subAssets = AssetDatabase.LoadAllAssetsAtPath(assetPath);

            foreach (var subAsset in subAssets)
            {
                if (subAsset is AnimationClip clip)
                {
                    DoHash(clip);
                }
            }
            
            EditorUtility.SetDirty(asset);
            AssetDatabase.SaveAssetIfDirty(asset);
        }
#endif
    }


В данный момент получается заменить только ивенты распакованной анимации, если применить DoHash на запакованный асеет в инспекторе ассета параметры не поменяются, если после этого извлечь анимацию через "ctrl+D" будет виден измененный параметр
  • Вопрос задан
  • 40 просмотров
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы