公共变量可在Inspector中使用,但不会显示在“场景”或“游戏”窗口中

时间:2019-02-13 19:42:50

标签: c# unity3d

在我的游戏中,我有一个倒计时脚本。一旦计时器(3秒)达到零,便开始游戏。
我想这样做,以便文本在倒计时期间会改变颜色(即3-红色,2-黄色,1-绿色)。

这很容易实现,但是我对使用countdown.color = Color.green;并不完全满意,并希望获得更大的灵活性(例如,在编辑器中使用颜色选择器)。

这是有效的代码:

Text countdown;

void OnEnable()
{
    countdown = GetComponent<Text>();
    countdown.text = "3";
    StartCoroutine("Countdown");
}

IEnumerator Countdown()
{
    int count = 3;

    for (int i = 0; i < count; i++)
    {
        countdown.text = (count - i).ToString();
        if ((count - i) == 3)
        {
            countdown.color = Color.red;
        }
        if ((count - i) == 2)
        {
            countdown.color = Color.yellow;
        }
        if ((count - i) == 1)
        {
            countdown.color = Color.green;
        }
        yield return new WaitForSeconds(1);            
    }
    StartRound();        
}        

这是让我头疼的一个:

public Color color3;
public Color color2;
public Color color1;

Text countdown;

void OnEnable()
{
    countdown = GetComponent<Text>();
    countdown.text = "3";
    StartCoroutine("Countdown");
}

IEnumerator Countdown()
{
    int count = 3;

    for (int i = 0; i < count; i++)
    {
        countdown.text = (count - i).ToString();
        yield return new WaitForSeconds(1);

        if ((count - i) == 3)
        {
            countdown.color = color3;                
        }

        if ((count - i) == 2)
        {
            countdown.color = color2;                
        }

        if ((count - i) == 1)
        {
            countdown.color = color1;                
        }        
    }
    StartRound();        
}        

第二个脚本有效,但只能使用以下内容:
-这3种颜色显示在检查器中,我可以打开颜色选择器并选择所需的颜色;
-但是,一旦我单击“播放”,该文本根本不会显示(倒数仍然有效,并且在那三秒钟后游戏正常开始),就好像alpha设置为0;
-在倒计时期间,我可以在检查器中看到默认的颜色选择器(文本(脚本)组件中的那个)在我的3种颜色之间循环,但是在“场景”或“游戏”视图中什么也没得到。

任何帮助将不胜感激。预先谢谢你。

1 个答案:

答案 0 :(得分:1)

  

文字根本不显示...好像alpha设置为0

您的alpha很有可能设置为0;您的代码看起来不错,并且如果第一个脚本可行,那么用第二个脚本替换它应该可以正确配置颜色(因此我认为是正确的)。如果您看一下该颜色选择器的屏幕截图,您会注意到该颜色显示在检查器和色轮中,但A值(R,G和B下方)为0。

Color Picker in Inspector with 0 alpha but color still shows

您必须手动将其设置为max(或您想要的任何非0值),这将在检查器中由填充颜色表示下方的白色条表示。注意,在下一个屏幕截图中,我将其设置为大约一半,因此检查器中的颜色下方有一个白色条形的一半:

enter image description here