首页 > 解决方案 > 字符变为纯黑色而不是恢复为原始字符

问题描述

字符变为透明,直到计时器结束,然后变为纯黑色,而不是弹回原始颜色。

    private Color c;

    void Start(){
    c = thePlayer.rend.color;
    }

public void HurtPlayer(int damageToTake)
    {
        healthCount -= damageToTake;
        UpdateHeartMeter ();
        StartCoroutine ("iFrames");
    }

    IEnumerator iFrames(){
            Physics2D.IgnoreLayerCollision (10, 11, true);
            c.a = 0.5f;
            thePlayer.rend.color = c;
            yield return new WaitForSeconds (2f);
            c.a = 1f;
            thePlayer.rend.color = c;
            Physics2D.IgnoreLayerCollision (10, 11, false);
    }

示例:https ://imgur.com/a/jFKXvhW

标签: unity3dcolorstransparent

解决方案


这段代码对我有用,我不确定您如何访问SpriteRenderer问题可能存在。我只通过单击按钮启动协程,因为我不知道您何时应用它。此代码附加到 Sprite。

private Color c;
// Use this for initialization
void Start () {
    c = gameObject.GetComponent<SpriteRenderer>().color;
}

// Update is called once per frame
void Update () {
    if(Input.GetKeyDown(KeyCode.Mouse0))
    {
        StartCoroutine("ChangeColor");
    }
}
IEnumerator ChangeColor()
{
    c.a = 0.5f;
    gameObject.GetComponent<SpriteRenderer>().color = c;
    yield return new WaitForSeconds(2);
    c.a = 1f;
    gameObject.GetComponent<SpriteRenderer>().color = c;
}

推荐阅读