Unity——制作简易红绿灯

news2024/11/25 1:21:38

效果图

与该类红绿灯相似。

前提准备

首先在场景中,创建一个正方体(灯座),球体(作为灯),把其放置成红绿灯结构。

创建四个材质球,基础色分别赋为灰色,红色,黄色,绿色。其中灰色作为灯座颜色,红、黄、绿材质球作为红绿灯变换的材质。

基本思想

我们日常的红绿灯,是变红,3秒黄灯,变绿,3秒黄灯,变红……,周而复始。这一看就是要用到循环,由于红绿灯一天都在工作,所以循环应该没有结束条件。我们创建了三个颜色的材质球,只要按着红黄绿黄红黄绿……分别赋给灯就行啦,如何在规定时间完成一个操作,这就要用到了Invoke()函数。

public void Invoke (string methodName, float time);

描述:在 time 秒后调用 methodName 方法。

这里涉及一个难点,就是黄灯的问题,因为不管是红灯过后还是绿灯过后一定是黄灯,但怎么确定黄灯后是红灯还是绿灯?为了解决这个问题,设计了一个标记,flag=1代表黄灯上一个是红灯,flag=0代表黄灯上一个是绿灯。

具体步骤

1.创建C#文件Test Script,代码如下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestScript : MonoBehaviour
{
    public Material[] materialss;
    int m_index = 0;//材质下标
    int flag = 1;//标记
   
    void Start()
    {
        changecolor();
    }

    void Update()
    { 
    }
    private void changecolor()
    {
        MeshRenderer mr = GetComponent<MeshRenderer>();
        mr.material = materialss[m_index];
        if (m_index == 0)//red
        {
            Invoke("changecolor",10);
            m_index = 1;

        }
        else if (m_index == 1)//yellow
        {
            Invoke("changecolor", 3);
            if (flag == 0)
            {
                m_index = 0;
                flag = 1;
            }else
            {
                m_index = 2;
                flag = 0;
            }
        }
        else if(m_index == 2)//green
        {
            Invoke("changecolor", 10);
            m_index = 1;
        }
    }
}

2.把脚本添加在灯节点上,并把三个材质添加到脚本中。

2. 点击运行即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/377831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何彻底删除SQL Server 2008中的登录账号

我个人遇到的最烦人的事情之一是 SQL Server Management Studio中“服务器名称和登录名”对话框的下拉列表。 以下是我想从 SSMS 连接屏幕中删除某些内容的两种情况: 键入的服务器名称不正确 服务器将来不需要。当我看到服务器的名称,它已经存在了很长一段时间,我知道我不会…

gismo中用等几何解决线弹性问题的程序示例---未完待续2023.2.28

文章目录前言一、调用线弹性程序示例1.1 对plateWithHole.xml文件的理解1.2 程序及注释1.3 对边界力函数的理解总结 #pic_center前言 gismo中用等几何解决线弹性问题 一、调用线弹性程序示例 1.1 对plateWithHole.xml文件的理解 算例来自文章&#xff1a;Isogeometric analysi…

操作系统真相还原_第7章:中断

文章目录7.1 中断分类外部中断内部中断7.2 中断描述符表中断门描述符中断描述符表寄存器IDTR中断处理过程中断发生时的栈变化7.3 可编程中断控制器8259A级联8259A8259A的编程7.4 编写中断处理程序中断初始化过程中断执行过程简单的中断处理程序中断处理程序改进思考7.5 8253定时…

PXC高可用集群(MySQL)

1. PXC集群概述 1.1. PXC介绍 Percona XtraDB Cluster&#xff08;简称PXC&#xff09; 是基于Galera的MySQL高可用集群解决方案Galera Cluster是Codership公司开发的一套免费开源的高可用方案PXC集群主要由两部分组成&#xff1a;Percona Server with XtraDB&#xff08;数据…

XXL-JOB

XXL-JOB介绍 XXL-JOB是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 官网&#xff1a;https://www.xuxueli.com/xxl-job/ 文档&#xff1a;分布式任务调度…

GO中sync 包的 RWMutex 读写互斥锁

文章目录背景RWMutex 简介代码验证多个协程请求读锁 RLock() 和 RLock()读写交错 RLock() 和 Lock()写入的时候读取读取的时候写入请求多个写Lock() 和 Lock()背景 Mutex 互斥锁是严格锁定读和写&#xff0c;如果我们需要单独对读或者写添加锁需要使用 sync包的RWMutex 针对读…

Linux服务器快速安装MySQL数据库

Linux服务器快速安装MySQL数据库 mysql官网下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 推荐使用命令下载安装&#xff0c;比较快 开始安装mysql 1.通过wget下载安装包 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.no…

运动耳机怎样戴不容易掉,运动不容易掉的运动蓝牙耳机推荐

在运动当中总是避免不了大幅度的晃动、跳跃&#xff0c;但是普通的耳机在运动当中佩戴时&#xff0c;耳机会时常出现掉落或者佩戴不牢固的现象发生&#xff0c;下面就给大家分享几款在运动当中佩戴较为稳固的运动蓝牙耳机吧~1、南卡Runner Pro4骨传导蓝牙运动耳机 &#xffe5;…

卡尔曼滤波学习

原教程地址&#xff1a;KalmanFilter.NET 卡尔曼滤波广泛应用在雷达系统&#xff08;目标跟踪&#xff09;中&#xff0c;但是其实它还可以应用在任何需要估算和预测的领域。 一、一维卡尔曼滤波 通过8个数值例子介绍卡尔曼滤波&#xff0c;涉及平均数、方差、标准差等&#…

解决Spring Data Jpa 实体类自动创建数据库表失败问题

先说一下我遇到的这个问题&#xff0c;首先我是通过maven创建了一个spring boot的工程&#xff0c;引入了Spring data jpa&#xff0c;结果实体类创建好之后&#xff0c;运行工程却没有在数据库中自动创建数据表。 找了半天发现是一个配置的问题! hibernate.ddl-auto节点的配…

【python学习笔记】:条件语句

Python 条件语句 Python条件语句是通过一条或多条语句的执行结果&#xff08;True或者False&#xff09;来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空&#xff08;null&#xff09;值为true&#xff0c;0 或者 null为fa…

Vue 中过滤器 filter 使用教程

Vue 过滤器 filter 使用教程文章目录Vue 过滤器 filter 使用教程一、过滤器1.1 过滤器使用的背景1.2 格式化时间的不同实现1.3 过滤器的使用1.4 过滤器总结一、过滤器 1.1 过滤器使用的背景 过滤器提供给我们的一种数据处理方式。过滤器功能不是必须要使用的&#xff0c;因为它…

DSP_TMS320F28377D_ADC学习笔记

前言 DSP各种模块的使用&#xff0c;基本上就是 GPIO复用配置、相关控制寄存器的配置、中断的配置。本文主要记录本人对ADC模块的学习笔记。TMS320F28377D上面有24路ADC专用IO&#xff0c;这意味着不需要进行GPIO复用配置。 只需要考虑相关控制寄存器和中断的配置。看代码请直…

2023年湖北住建厅八大员各岗位题库精准小题库-启程别

2023年湖北住建厅八大员各岗位题库精准小题库-启程别 住建厅八大员&#xff08;施工员、质量员、资料员、材料员、机械员、标准员、劳务员&#xff09; 各岗位题库分2种&#xff1a; 1.住建厅八大员报名之后会有培训任务&#xff0c;完成培训任务学习才能安排考试&#xff0c;…

番外10:使用ADS对射频功率放大器进行非线性测试2(使用带宽20MHz的64QAM信号进行ACLR、EVM、CCDF测试)

番外10&#xff1a;使用ADS对射频功率放大器进行非线性测试2&#xff08;使用带宽20MHz的64QAM信号进行ACLR、EVM、CCDF测试&#xff09; 1、基本理论 功率放大器的非线性性能十分重要&#xff0c;特别是对于当前广泛使用的移动设备。由于其各种复杂的信号调制&#xff0c;功…

大数据系统重点

第一章 大数据计算系统概述 1 大数据计算框架概述 计算框架: 一种抽象&#xff0c;在其中提供相应的通用功能供用户编写代码以实现具体功能&#xff0c;从而形成面向应用的软件。 大数据计算框架&#xff1a;面向大数据的计算框架。 Hadoop Hadoop的运行过程 Hadoop的详细…

Android 9.0系统源码_通知服务(三)应用发送状态栏通知的流程

前言 应用发送一个显示在状态栏上的通知&#xff0c;对于移动设备来说是很常见的一种功能需求&#xff0c;本篇文章我们将会结合Android9.0系统源码具体来分析一下&#xff0c;应用调用notificationManager触发通知栏通知功能的源码流程。 一、应用触发状态栏通知 应用可以通…

专题:一看就会的C++类模板讲解 (1)

目录 一.类模板的作用 二.类模板的定义&#xff1a; 三.类模板的声明格式&#xff1a; 四.类模板对象 五.再举一个例子 一.类模板的作用 面向对象的程序设计编程实践中&#xff0c;我们可能会面临这样的问题&#xff1a;要实现比较两个数的大小。明明比较两个数的方法都一样…

小米mix2s刷win11和android双系统

在给电脑安装系统的过程中&#xff0c;可能会因为各种原因出现windows无法安装的情况&#xff0c;我在给小米mix2s安装win11时发现出现了“计算机意外地重新启动或遇到错误&#xff0c;windows无法安装”的情况&#xff0c;下面就来教一下大家两种解决方法&#xff0c;希望可以…

进行新类检测以及概念漂移适应的半监督分类框架SACCOS论文阅读笔记

介绍 本文主要想解决基于聚类的概念漂移检测方法中常做出的强假设问题&#xff0c;即假设同类比较接近&#xff0c;异类比较远离&#xff0c;并且还假设新类别出现时通常会连续大量出现。 针对这些问题&#xff0c;本文提出了一种基于数据流的半监督自适应分类框架SACCOS&…