我目前正在使用 Unity 开发一款游戏,但遇到了一个小问题。我正在尝试创建一种效果,当得分计数器递增时,游戏得分计数器的颜色会暂时改变颜色,然后切换回其原始颜色。但是,当我尝试这样做时,我的游戏不断崩溃。我正在使用 while 循环来执行此任务,但是一旦我尝试在游戏中触发此事件,我的游戏以及 Unity 崩溃。有谁知道为什么会发生这种情况并且可能有解决方案来解决这个问题?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StarCollision : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "White Ball" )
{
gameObject.SetActive(false);
ScoreScript.scoreValue += 1;
while (Time.deltaTime < 0.2f)
{
ScoreScript.score.color = Color.yellow;
}
ScoreScript.score.color = Color.white;
}
}
}
最佳答案
使用协程及其 WaitForSeconds 方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StarCollision : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("White Ball"))
{
ScoreScript.scoreValue += 1;
StartCoroutine(ChangeColor());
}
}
private IEnumerator ChangeColor ()
{
ScoreScript.score.color = Color.yellow;
yield return new WaitForSeconds(0.2f);
ScoreScript.score.color = Color.white;
gameObject.SetActive(false);
}
}
关于c# - 在 C# 和 Unity 中更改特定时间的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54980581/