Единство: замедление вызвано чем-то?
Я выяснил, как создать пакет ресурсов, содержащий анимационный клип, а затем загрузить этот анимационный клип в другой проект, а затем переопределить существующий анимационный клип новым с помощью сценария. В основном цель состоит в том, чтобы позволить пользователям редактировать анимацию.
Теперь все, к счастью, работает, но по какой-то причине происходит замедление. Я не уверен, что вызывает замедление, когда все загружается в стартовом кадре:
Вот мой код:
protected Animator animator;
protected AnimatorOverrideController animatorOverrideController;
protected AnimationClipOverrides clipOverrides;
void Start()
{
animator = GetComponent<Animator>();
animatorOverrideController = new AnimatorOverrideController(animator.runtimeAnimatorController);
animator.runtimeAnimatorController = animatorOverrideController;
clipOverrides = new AnimationClipOverrides(animatorOverrideController.overridesCount);
animatorOverrideController.GetOverrides(clipOverrides);
LoadAnimation();
}
public void LoadAnimation()
{
StartCoroutine(LoadAnimClip());
}
IEnumerator LoadAnimClip(string )
{
var FilePath = Application.streamingAssetsPath + "/Characters/Sonic/Animations/stand";
var req = AssetBundle.LoadFromFileAsync(FilePath);
yield return req;
AssetBundle animationAsset = req.assetBundle;
AnimationClip animation = animationAsset.LoadAsset<AnimationClip>("Stand") as AnimationClip;
clipOverrides["Idle"] = animation;
animatorOverrideController.ApplyOverrides(clipOverrides);
}
Если вам интересно, что такое animationclipoverrides, вот класс:
public class AnimationClipOverrides : List<KeyValuePair<AnimationClip, AnimationClip>
{
public AnimationClipOverrides(int capacity) : base(capacity) { }
public AnimationClip this[string name]
{
get { return this.Find(x => x.Key.name.Equals(name)).Value; }
set
{
int index = this.FindIndex(x => x.Key.name.Equals(name));
if (index != -1)
this[index] = new KeyValuePair<AnimationClip, AnimationClip>(this[index].Key, value);
}
}
}