在Unity3D中每10秒更改一次相机颜色c#

时间:2015-01-16 09:16:25

标签: c# timer unity3d runtime background-color

我想要统一更改相机颜色,我知道如何在脚本camera.backgroundColor = Color.red;

中更改它一次

但是如何在每10秒间隔后更改它,是否有任何计时器可以在一定时间后调用。

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用计时器,

Timer tm = new Timer(ChangeColor, cameraObject, 0, 1000);
    private void ChangeColor(object camera)
    {
        //camera is your camera object
        if (camera != null)
        {
            camera.backgroundColor = Color.red;
        }
    }

您还可以在ChangeColor方法中将颜色作为参数传递,以设置所需的颜色。

Timer tm = new Timer(ChangeColor, color, 0, 1000);
        private void ChangeColor(object color)
        {   
            Color backColor = color as Color;
            // camera is member variable
            if (color!= null)
            {
                camera.backgroundColor = backColor ;
            }
        }

或者您也可以将相机对象和颜色都作为元组传递。

答案 1 :(得分:0)

您可以使用Timer,但我会在Update()方法中使用简单条件解决此问题:

float elapsedTime;

void Update()
{
    elapsedTime += Time.deltaTime;

    if (elapsedTime >= 10)
    {
        elapsedTime -= 10;
        // insert logic for changing color below:
        camera.backgroundColor = Color.red;
    }
}

在我看来,这更容易使用。