Для примера у меня есть вот такой ассет
![6692aa492fd05307426201.png](https://habrastorage.org/webt/66/92/aa/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" будет виден измененный параметр