c# - 在 C# 和 Unity 中更改特定时间的文本颜色

标签 c# unity3d game-development

我目前正在使用 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/

相关文章:

c# - 如何将 SQL Server 过程变量设置为从 C# ASP.NET MVC 程序输入的数据?

unity3d - 使用计算着色器返回纹理是否具有特定颜色

c# - 在 Unity 中使用 GetComponent 时通过基类管理派生类?

c++ - “这”为0xDDDDDDDD:弹出堆栈时发生读取访问冲突

javascript - 使用node.js将url转发到游戏服务器

c# - WPF MouseButtonEventArgs Timestamp 值为负数?

c# - 为什么Regex的Matches函数这么快?

c# - 在 C# 中使用 IsAssignableFrom 和 "is"关键字

c# - 缓慢移动 Sprite 时获得 "giggly"效果

java - AndEngine 物理示例