Я бы хотел получить тот же эффект, что и в Seasons After Fall в Unity 5.2.0f3 для 2D-проекта: https://i.stack.imgur.com/WCIhs.gif
Вот трейлер, https://www.youtube.com/watch?v=cmAWybFKNh8
I 'я пытаюсь воспроизвести материал, состоящий из шейдера, в Sprite Renderer следующим образом:
spriteRenderer = background.GetComponentInChildren<SpriteRenderer>();
spriteRendererMaterial = Instantiate(spriteRenderer.sharedMaterial);
spriteRendererMaterial.SetFloat("Slider_Dissolve", 1.5f);
spriteRenderer.material = spriteRendererMaterial;
Но тогда я хотел бы применить тот же материал к изображению, но он не работает, когда я запускаю игрудаже если я вижу, что материал обновляется в «представлении проекта».
Эта проблема также обсуждалась на их форуме, но учтите, что ни в одном из моих компонентов нет абсолютно никаких масок по сравнению с: https://forum.unity.com/threads/trying-to-animate-an-image-component-material-shader.265023/ Эффект также обсуждался здесь: Эффект раскрытия сезонных изменений
У меня заканчиваются решения, любая помощь будет оценена.
Вот тема, которая, хотя и помогла бы: https://forum.unity.com/threads/material-isnt-updating-when-using-setfloat.530548/ К сожалению, нет ...
Ниже приводится сопрограмма, которую я хочу выполнить после нажатия кнопки:
IEnumerator WaitForInteractiveElementTransform(Animator animator)
{
if (animator != null)
{
while (animator.GetCurrentAnimatorStateInfo(0).length >
animator.GetCurrentAnimatorStateInfo(0).normalizedTime)
{
yield return null;
}
}
if (animatorBackground != null)
{
animatorBackground.SetBool("On", true);
}
else
{
P4.gameObject.SetActive(false);
P4Fantasy.gameObject.SetActive(true);
}
state = SceneState.Unreal;
StartCoroutine(SetMaterialFloatOverTime(spriteRendererMaterial, 1.5f, "Slider_Dissolve"));
private IEnumerator SetMaterialFloatOverTime(Material material, float
duration, string propertyName)
{
float timer = 0;
while (timer < duration)
{
material.SetFloat(propertyName, timer);
spriteRenderer.material = material;
timer += Time.deltaTime;
yield return null;
}
}
Сопрограмма SetMaterialFloatOverTime обновляет свойство Slider_Dissolve weel, но изображение на сцене iне обновляется каждый раз при изменении значения этого свойства.
Есть идеи?