#c# #unity3d #animation #runtime
Вопрос:
В настоящее время я создаю игру и хочу создать и запустить анимацию во время выполнения. Это то, что я получил до сих пор:
void Start()
{
Sprite[] sprites = upgrades.GetComponent<uprgades>().sprites;
AnimationClip animClip = new AnimationClip();
animClip.frameRate = 60;
EditorCurveBinding spriteBinding = new EditorCurveBinding();
spriteBinding.type = typeof(SpriteRenderer);
spriteBinding.path = "";
spriteBinding.propertyName = "m_Sprite";
ObjectReferenceKeyframe[] spriteKeyFrames = new ObjectReferenceKeyframe[sprites.Length];
for(int j = 0; j < (sprites.Length); j )
{
spriteKeyFrames[j] = new ObjectReferenceKeyframe();
spriteKeyFrames[j].time = j;
spriteKeyFrames[j].value = sprites[j];
}
AnimationUtility.SetObjectReferenceCurve(animClip, spriteBinding, spriteKeyFrames);
AnimationClipSettings animClipSett = new AnimationClipSettings();
animClipSett.loopTime = true;
animClip.legacy = true; //added
AnimationUtility.SetAnimationClipSettings(animClip, animClipSett);
Я не все понимаю до конца, потому что нашел это в Интернете. Но теперь мне нужно запустить анимацию. Поэтому я сделал это:
Animation anim = someGameObject.GetComponent<Animation>();
anim.clip = animClip;
anim.Play();
}
Но это не работает. Я думаю, что это как-то связано с тем, что у меня нет никакого аниматора / или контроллера, но я не знаю, нужно ли мне добавлять их, как и где я должен это сделать
Комментарии:
1.Вы пробовали сделать
AnimationClip
legacy
это ?2. Я добавил его (вы можете видеть, где в коде выше), но, похоже, это ничего не меняет
Ответ №1:
Где вы запускаете анимацию? Это в функции обновления?