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错误代码重试?

c# - 如何调用WCF服务方法

c# - SQL 用户定义的值的聚合顺序保留?

c# - 检测输入字段中的复制和粘贴

c# - 当前的LOD级别-LOD Group Unity

c# - ASP.NET 从内容页面更改 facebook og 属性

unity3d - 将 Unity 脚本附加到游戏对象时出错

lua - <eof>预计在“末尾”附近

java - 我的文字搜索游戏不断崩溃,但在构建时未检测到错误

javascript - 简单的Javascript游戏,重复功能。 (新手问题)