Я устанавливаю «вступление к сцене» с текстом «Уровень 1», используя TextMeshPro. Я создал текстовый элемент на холсте, и я пытаюсь найти способ заставить его исчезать, затем ждать и затем исчезать (что-то вроде того, что вы видите, когда открываете новое место в Скайриме).
Пока что я попробовал универсальное решение, чтобы я мог использовать тот же сценарий для других целей (например, не в начале сцены, не только в появлении и т. Д.).
Использование TMPro:
...
using TMPro;
...
Начало и объявление:
public class IntroFade : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI textToUse;
[SerializeField] private bool fadeIn = false;
[SerializeField] private bool fadeOnStart = false;
[SerializeField] private float timeMultiplier;
private bool FadeIncomplete = false;
private void Start()
{
if (fadeOnStart)
{
if (fadeIn)
{
StartCoroutine(FadeInText(timeMultiplier, textToUse));
FadeIncomplete = true;
}
else
{
StartCoroutine(FadeOutText(timeMultiplier, textToUse));
}
}
}
...
Обновление, в котором я хочу постепенно исчезнуть, как только fadein завершено
private void Update()
{
if (FadeIncomplete)
{
StartCoroutine(FadeOutText(timeMultiplier, textToUse));
}
}
Corouritnes для фактического замирания:
private IEnumerator FadeInText(float timeSpeed, TextMeshProUGUI text)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, 0);
while (text.color.a < 1.0f)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, text.color.a + (Time.deltaTime * timeSpeed));
yield return null;
}
}
private IEnumerator FadeOutText(float timeSpeed, TextMeshProUGUI text)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, 1);
while (text.color.a > 0.0f)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, text.color.a - (Time.deltaTime * timeSpeed));
yield return null;
}
}
public void FadeInText(float timeSpeed = -1.0f)
{
if (timeSpeed <= 0.0f)
{
timeSpeed = timeMultiplier;
}
StartCoroutine(FadeInText(timeSpeed, textToUse));
}
public void FadeOutText(float timeSpeed = -1.0f)
{
if (timeSpeed <= 0.0f)
{
timeSpeed = timeMultiplier;
}
StartCoroutine(FadeOutText(timeSpeed, textToUse));
}
Так что же происходит, когда он либо исчезает, либо исчезает в зависимости от того, какая программа запускается первой. Я не могу сделать так, чтобы он исчезал, оставался на экране в течение примерно 2 секунд, а затем исчезал.
Я также попытался зайти в затем, создав сопрограмму для ожидания в течение нескольких секунд, а затем вызвал сопрограмму исчезновения, но это тоже не сработало.