如何在 Unity 中创建交通信号灯

本教程将指导您使用 C# 在 Unity 中创建简单的交通信号灯系统。您将学习如何设置交通信号灯、添加逻辑来控制它们以及模拟一个正常工作的交通信号灯系统。

先决条件

  • Unity 接口的基础知识
  • 对 C# 编程有基本了解
  • Unity 安装在您的计算机上(任何最新版本)

步骤 1:设置场景

首先,我们需要在 Unity 中设置三个灯(红、黄、绿)的场景来模拟交通灯系统。

  1. 打开Unity并创建一个新项目。
  2. Hierarchy 窗口中,创建三个 3D 对象 来表示交通信号灯。您可以为每个信号灯使用 Spheres。将它们重命名为 RedLightYellowLightGreenLight
  3. Scene 视图中将它们叠放在一起,以模拟垂直交通信号灯。根据需要调整它们的位置和比例。
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • 选择RedLight并将其材质颜色更改为红色。
    • 选择 YellowLight 并将其材质颜色更改为黄色。
    • 选择GreenLight并将其材质颜色更改为绿色。

步骤 2:创建交通信号灯脚本

现在,我们将编写一个脚本来控制交通信号灯的行为。该脚本将定期循环显示红灯、黄灯和绿灯。

  1. Assets 文件夹中,右键单击并选择 Create > C# Script。将其命名为 TrafficLightController
  2. 在您喜欢的代码编辑器中打开脚本并写入以下代码:
using System.Collections;
using UnityEngine;

public class TrafficLightController : MonoBehaviour
{
    public GameObject redLight;
    public GameObject yellowLight;
    public GameObject greenLight;
    
    public float redLightDuration = 5f;
    public float yellowLightDuration = 2f;
    public float greenLightDuration = 5f;
    
    private void Start()
    {
        StartCoroutine(TrafficLightCycle());
    }
    
    IEnumerator TrafficLightCycle()
    {
        while (true)
        {
            // Red light on
            redLight.SetActive(true);
            yellowLight.SetActive(false);
            greenLight.SetActive(false);
            yield return new WaitForSeconds(redLightDuration);
            
            // Green light on
            redLight.SetActive(false);
            yellowLight.SetActive(false);
            greenLight.SetActive(true);
            yield return new WaitForSeconds(greenLightDuration);
            
            // Yellow light on
            redLight.SetActive(false);
            yellowLight.SetActive(true);
            greenLight.SetActive(false);
            yield return new WaitForSeconds(yellowLightDuration);
        }
    }
}

该脚本定义了一个简单的循环,其中红灯、绿灯和黄灯按顺序打开和关闭。

步骤 3:将灯光分配给脚本

现在脚本已经准备好了,我们需要将灯光对象链接到脚本,以便它知道要控制哪些灯光。

  1. 选择 Main Camera 或在场景中创建一个空的游戏对象来保存脚本。将其命名为 TrafficLightController
  2. Inspector 中,单击 Add Component 并附加 TrafficLightController 脚本。
  3. Assign the traffic light spheres to the script:
    • RedLight 对象拖入脚本中的 redLight 字段。
    • YellowLight 对象拖入 yellowLight 字段。
    • GreenLight 对象拖入 greenLight 字段。

步骤4:测试交通信号灯系统

现在,是时候测试交通灯系统并看看一切是否按预期运行了。

  1. 按下 Unity 编辑器顶部的 Play 按钮。
  2. 观察交通信号灯系统的运行情况。红灯、绿灯和黄灯应根据您在脚本中定义的时间间隔循环。

如果一切正常,您应该会看到红灯亮 5 秒,然后绿灯亮 5 秒,然后黄灯亮 2 秒,循环重复。

步骤 5:自定义交通信号灯

您可以通过更改每个灯的时间间隔来轻松自定义交通灯系统。在 Inspector 窗口中,修改 redLightDurationyellowLightDurationgreenLightDuration 字段以更改每个灯亮起的时间。

例如,您可以让红灯亮更长时间以模拟繁忙的路口,或者调整黄灯持续时间以实现更快的过渡。

结论

您已在 Unity 中成功创建了一个简单的交通信号灯系统。通过本教程,您学会了如何使用 C# 控制游戏对象并实现定时循环来模拟真实世界的系统。从这里开始,您可以通过添加更多功能(如行人信号灯、倒数计时器或更复杂的交通规则)来扩展此项目。