unity 红绿灯写法
时间: 2023-09-25 09:09:23 浏览: 87
unity红绿灯配套代码
以下是一个简单的红绿灯系统的Unity代码:
```csharp
public class TrafficLight : MonoBehaviour
{
public Light redLight;
public Light yellowLight;
public Light greenLight;
private enum LightState { Red, Yellow, Green }
private LightState currentLightState;
private float redLightDuration = 5.0f;
private float yellowLightDuration = 2.0f;
private float greenLightDuration = 5.0f;
private float timer;
void Start()
{
currentLightState = LightState.Red;
redLight.gameObject.SetActive(true);
yellowLight.gameObject.SetActive(false);
greenLight.gameObject.SetActive(false);
timer = redLightDuration;
}
void Update()
{
timer -= Time.deltaTime;
if (timer <= 0)
{
switch (currentLightState)
{
case LightState.Red:
currentLightState = LightState.Green;
redLight.gameObject.SetActive(false);
yellowLight.gameObject.SetActive(false);
greenLight.gameObject.SetActive(true);
timer = greenLightDuration;
break;
case LightState.Yellow:
currentLightState = LightState.Red;
redLight.gameObject.SetActive(true);
yellowLight.gameObject.SetActive(false);
greenLight.gameObject.SetActive(false);
timer = redLightDuration;
break;
case LightState.Green:
currentLightState = LightState.Yellow;
redLight.gameObject.SetActive(false);
yellowLight.gameObject.SetActive(true);
greenLight.gameObject.SetActive(false);
timer = yellowLightDuration;
break;
}
}
}
}
```
在这个代码中,我们使用了一个 `enum` 类型来表示当前红绿灯的状态,同时使用了三个 `Light` 类型的变量来表示红、黄、绿三个灯的状态。我们还定义了每个状态的持续时间,以及一个计时器变量来计算每个状态的时间。
在 `Start` 方法中,我们初始化了红灯状态,并启用了红灯。然后在 `Update` 方法中,我们不断减少计时器变量的时间,并在计时器变量减少到零时切换到下一个状态。在每个状态切换时,我们更新灯光状态并重置计时器变量。
这是一个简单的 Unity 红绿灯系统,你可以根据实际需求进行修改和扩展。
阅读全文