Запускается скрипт, суть которого "растворить" объект, а затем вернуть его назад. Но мне надо сделать так, чтобы скрипт ждал некоторое время перед появлением/растворением. Сначала все идет нормально, объект "растворяется", ждет некоторое время, а затем снова появляется. Но перед тем, как повторно "раствориться", скрипт не ждет, а просто сразу же "растворяет" объект.
Сам скрипт
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(MeshRenderer))]
public class DissolveLava : MonoBehaviour
{
private MeshRenderer meshRenderer;
public float speed = 0.5f;
private float cut_off = 0.05f;
private bool end = false, wait = false;
private float t = 0.0f;
public float waitEmpty = 1f, waitNotDissolved = 1f;
private void Start(){
meshRenderer = this.GetComponent<MeshRenderer>();
}
private void Update(){
if(wait == false){
if(end == false){
Dissolve();
}
if(end == true){
UnDissolve();
}
if(cut_off > 1f){
t = 0.0f;
end = true;
wait = true;
}
if(cut_off < 0.0f){
t = 0.0f;
end = false;
wait = true;
}
}
if(wait == true){
StartCoroutine(CoolDown());
}
}
private void Dissolve(){ // Растворение объекта
Material[] mats = meshRenderer.materials;
cut_off = speed * t;
mats[0].SetFloat("_Cutoff", cut_off);
t += Time.deltaTime;
// так не будет работать -> meshRenderer.materials[0]
meshRenderer.materials = mats;
}
private void UnDissolve(){ // Возврат объекта
Material[] mats = meshRenderer.materials;
cut_off = 1f - (speed * t);
mats[0].SetFloat("_Cutoff", cut_off);
t += Time.deltaTime;
meshRenderer.materials = mats;
}
IEnumerator CoolDown(){
if(end == true){
yield return new WaitForSeconds(waitEmpty);
wait = false;
}
if(end == false){
yield return new WaitForSeconds(waitNotDissolved);
wait = false;
}
}
}