2016-07-15 3 views
1

Добрый день.единство C# Анимация изменение свойства спрайт

в свойствах анимации (спрайт), как изменить спрайт определенного кадра в C#? Я попытался поместить событие, вызвав функцию, которая передает спрайт-рендеринг объекта и помещает в поле спрайта, но не меняет прогон. Он работает, что определил его в анимации. Я пытаюсь изменить прямо там, но не знаю, как это сделать.

помогите пожалуйста!

ответ

2

Насколько я видел и исследовал, вы не можете этого делать в настоящее время.

Лучшим обходным решением, которое я сделал раньше и очень рекомендую, является создание чего-то вроде скрипта CustomAnimationClip с массивом спрайтов и таймера для переключения с каждого кадра на другой. Затем вы можете изменить спрайты анимации в любое время, отредактировав массив.

вот пример:

SpriteRenderer spriteRenderer; 
public Sprite[] frames; 

[SerializeField] int fps; 
int currentFrame = 0; 

float frameTime; 
float frameTimer = 0; 

void Awake() 
{ 
    spriteRenderer = GetComponent<SpriteRenderer>(); 
} 

void Start() 
{ 
    frameTime = 1/(float)fps; 
    spriteRenderer.sprite = frames[0]; 
} 

void Update() 
{ 
    if (frameTimer < frameTime) 
    { 
     frameTimer += Time.deltaTime; 
    } 
    else 
    { 
     spriteRenderer.sprite = frames[currentFrame]; 
     currentFrame = (currentFrame + 1) % (frames.Length); 
     frameTimer = 0; 
    } 
} 
+0

спасибо я попробую. - это именно то, что мне нужно: D –

+0

Не могли бы вы принять мой ответ, если он сработает для вас :)? Спасибо! –

Смежные вопросы