【问题标题】:How to change alpha of a sprite through script in Unity如何通过 Unity 中的脚本更改精灵的 alpha
【发布时间】:2015-12-13 12:35:49
【问题描述】:

我有 4 个按钮,按下按钮时每个按钮都会闪烁。但是,如果您要按下一个按钮,则当该按钮较暗(闪烁)时单击另一个按钮,该按钮就会保持黑暗。我想在禁用它们之前重置精灵的颜色,但是它不起作用。当按钮被按下时,它们不再闪烁......

代码如下:

void Start () {
        easy.GetComponent<SpriteRenderer>().color = color;
    }

    void Update () {
        if(difficultySelected[0] == true){
            enemyBehavior.shotsPerSecond = 0.2f;
            //Enabling the selected button
            easy.enabled = true;

            //Reseting the colors
            normal.GetComponent<SpriteRenderer>().color = color;
            hard.GetComponent<SpriteRenderer>().color = color;
            expert.GetComponent<SpriteRenderer>().color = color;

            //Disabling the 'unselected' buttons
            normal.enabled = false;
            hard.enabled = false;
            expert.enabled = false;

            easy.Play("Difficulty");
        }else if(difficultySelected[1] == true){
            enemyBehavior.shotsPerSecond = 0.5f;
            normal.enabled = true;

            easy.GetComponent<SpriteRenderer>().color = color;
            hard.GetComponent<SpriteRenderer>().color = color;
            expert.GetComponent<SpriteRenderer>().color = color;

            easy.enabled = false;
            hard.enabled = false;
            expert.enabled = false;

            normal.Play("Difficulty");
        }else if(difficultySelected[2] == true){
            enemyBehavior.shotsPerSecond = 1;
            hard.enabled = true;

            easy.GetComponent<SpriteRenderer>().color = color;
            normal.GetComponent<SpriteRenderer>().color = color;
            expert.GetComponent<SpriteRenderer>().color = color;

            easy.enabled = false;
            normal.enabled = false;
            expert.enabled = false;

            hard.Play("Difficulty");
        }else if(difficultySelected[3] == true){
            enemyBehavior.shotsPerSecond = 2;
            expert.enabled = true;

            easy.GetComponent<SpriteRenderer>().color = color;
            normal.GetComponent<SpriteRenderer>().color = color;
            hard.GetComponent<SpriteRenderer>().color = color;

            easy.enabled = false;
            normal.enabled = false;
            hard.enabled = false;

            expert.Play("Difficulty");
        }
    }

【问题讨论】:

  • 听起来像是一个调试任务,你已经提前了..开始调试
  • 我对 Unity3d 不是很熟悉,但是 alpha 通常是一个颜色通道。 RGBA..我(认为它是 32 位 targa 文件中的 GBRA,但您通常不必处理托管中的字节顺序..)
  • 遮罩是另一种适用于整个图像/图形/纹理的技术
  • 无论如何.. 我真的不一定在这里看到 SO 问题,它似乎更像是一个依赖于平台的问题,您可能会从 gamedev.stackexchange.com 获得更多关于此事的信息。
  • 谢谢大家! @BrettCaswell 我刚刚把它放在 gamedev.stackexchange.com 上

标签: c# button unity3d alpha flashing


【解决方案1】:

你可以写:

color.a = 1f; // value between 0 and 1, where 1 is opaque

//Resetting the colors
normal.GetComponent<SpriteRenderer>().color = color;
hard.GetComponent<SpriteRenderer>().color = color;
expert.GetComponent<SpriteRenderer>().color = color;

【讨论】:

    猜你喜欢
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2016-09-02
    • 2012-08-22
    • 2023-03-03
    相关资源
    最近更新 更多