在 Unity3D c# 中每 10 秒更改一次相机颜色
Change camera color after every 10 sec in Unity3D c#
我想统一更改相机颜色,我知道如何在脚本中更改一次 camera.backgroundColor = Color.red;
但是如何在每 10 秒间隔后更改它,是否有任何定时器可以在特定时间后调用。
谢谢
你可以使用定时器,
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 ;
}
}
或者您也可以将相机对象和颜色都作为元组传递。
您可以使用 Timer
,但我会在您的 Update()
方法中使用一个简单的条件来解决它:
float elapsedTime;
void Update()
{
elapsedTime += Time.deltaTime;
if (elapsedTime >= 10)
{
elapsedTime -= 10;
// insert logic for changing color below:
camera.backgroundColor = Color.red;
}
}
在我看来,这样更容易使用。
我想统一更改相机颜色,我知道如何在脚本中更改一次 camera.backgroundColor = Color.red;
但是如何在每 10 秒间隔后更改它,是否有任何定时器可以在特定时间后调用。
谢谢
你可以使用定时器,
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 ;
}
}
或者您也可以将相机对象和颜色都作为元组传递。
您可以使用 Timer
,但我会在您的 Update()
方法中使用一个简单的条件来解决它:
float elapsedTime;
void Update()
{
elapsedTime += Time.deltaTime;
if (elapsedTime >= 10)
{
elapsedTime -= 10;
// insert logic for changing color below:
camera.backgroundColor = Color.red;
}
}
在我看来,这样更容易使用。