[Unity3D]用C#在unity里面写一个简单的红绿灯

  • 00.成果展示
  • 01.创建可变颜色的小球
  • 02.编写代码
    • R1.cs
    • R2.cs
    • G1.cs
    • G2.cs
    • Y1.cs
    • Y2.cs
  • 03.自己遇到的问题
  • 04.借鉴文章
  • 05.代码和预制体放上来了
    • 在此处下载:
    • 使用方法:

00.成果展示

01.创建可变颜色的小球

创建一个项目,命名为traffic。新建12个sphere(或者建一个之后一直复制)命名为red,yellow,green,按照如下的结构排放。TrafficForward等都是空物体,即Create Empty。之后将仿真的红绿灯模型(即models和up、down)加到小球上面。

02.编写代码

分为6个代码,为红1,红2,绿1,绿2,黄1,黄2
TrafficForward和TrafficBack使用1,另外两个用2.

R1.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class R1 : MonoBehaviour
{void Start(){Material material = new Material(Shader.Find("Transparent/Diffuse"));material.color = Color.black;GetComponent<Renderer>().material = material;//开始时将灯设置为黑色InvokeRepeating("RedTurn", 63f, 123f);//InvokeRepeating("TurnBlack", 123f, 123f);//}void Update(){}void RedTurn(){Material material1 = new Material(Shader.Find("Transparent/Diffuse"));material1.color = Color.red;GetComponent<Renderer>().material = material1;}void TurnBlack(){Material material2 = new Material(Shader.Find("Transparent/Diffuse"));material2.color = Color.black;GetComponent<Renderer>().material = material2;}
}

R2.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class R2 : MonoBehaviour
{void Start(){Material material = new Material(Shader.Find("Transparent/Diffuse"));material.color = Color.black;GetComponent<Renderer>().material = material;//开始时将灯设置为黑色InvokeRepeating("RedTurn", 0f, 123f);//InvokeRepeating("TurnBlack", 60f, 123f);//}void Update(){}void RedTurn(){Material material1 = new Material(Shader.Find("Transparent/Diffuse"));material1.color = Color.red;GetComponent<Renderer>().material = material1;}void TurnBlack(){Material material2 = new Material(Shader.Find("Transparent/Diffuse"));material2.color = Color.black;GetComponent<Renderer>().material = material2;}}

G1.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class G1 : MonoBehaviour
{void Start(){Material material = new Material(Shader.Find("Transparent/Diffuse"));material.color = Color.black;GetComponent<Renderer>().material = material;//开始时将灯设置为黑色InvokeRepeating("GreenTurn", 0f, 123f);//0秒后调用GreenTurn() 函数InvokeRepeating("TurnBlack", 60f, 123f);//绿灯灭}void Update(){}void GreenTurn(){Material material1 = new Material(Shader.Find("Transparent/Diffuse"));material1.color = Color.green;GetComponent<Renderer>().material = material1;}void TurnBlack(){Material material2 = new Material(Shader.Find("Transparent/Diffuse"));material2.color = Color.black;GetComponent<Renderer>().material = material2;}
}

G2.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class G2 : MonoBehaviour
{void Start(){Material material = new Material(Shader.Find("Transparent/Diffuse"));material.color = Color.black;GetComponent<Renderer>().material = material;//开始时将灯设置为黑色InvokeRepeating("GreenTurn", 60f, 123f);//0秒后调用GreenTurn() 函数InvokeRepeating("TurnBlack", 120f, 123f);//绿灯灭}void Update(){}void GreenTurn(){Material material1 = new Material(Shader.Find("Transparent/Diffuse"));material1.color = Color.green;GetComponent<Renderer>().material = material1;}void TurnBlack(){Material material2 = new Material(Shader.Find("Transparent/Diffuse"));material2.color = Color.black;GetComponent<Renderer>().material = material2;}
}

Y1.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Y1 : MonoBehaviour
{void Start(){Material material = new Material(Shader.Find("Transparent/Diffuse"));material.color = Color.black;GetComponent<Renderer>().material = material;//开始时将灯设置为黑色InvokeRepeating("YellowTurn", 60f, 123f);//InvokeRepeating("TurnBlack", 63f, 123f);//}void Update(){}void YellowTurn(){Material material1 = new Material(Shader.Find("Transparent/Diffuse"));material1.color = Color.yellow;GetComponent<Renderer>().material = material1;}void TurnBlack(){Material material2 = new Material(Shader.Find("Transparent/Diffuse"));material2.color = Color.black;GetComponent<Renderer>().material = material2;}
}

Y2.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Y2 : MonoBehaviour
{void Start(){Material material = new Material(Shader.Find("Transparent/Diffuse"));material.color = Color.black;GetComponent<Renderer>().material = material;//开始时将灯设置为黑色InvokeRepeating("YellowTurn", 120f, 123f);//InvokeRepeating("TurnBlack", 123f, 123f);//}void Update(){}void YellowTurn(){Material material1 = new Material(Shader.Find("Transparent/Diffuse"));material1.color = Color.yellow;GetComponent<Renderer>().material = material1;}void TurnBlack(){Material material2 = new Material(Shader.Find("Transparent/Diffuse"));material2.color = Color.black;GetComponent<Renderer>().material = material2;}
}

03.自己遇到的问题

放置的时间太久了,我已经忘了当时想要写的问题了。就这吧。

04.借鉴文章

借鉴的https://blog.csdn.net/W_Chelsea/article/details/103180322
以及https://blog.csdn.net/MASILEJFOAISEGJIAE/article/details/84076048,
一开始以后一个为主搞得,总是有问题,转成第一个。

05.代码和预制体放上来了

在此处下载:

https://download.csdn.net/download/weixin_43784914/85854003

使用方法:

将其拉到Project下的Assets目录下进行导入。

导入。

将导入的traffic预制体拖入场景当中。

运行可看。每隔60秒绿灯灭,黄灯亮3秒,再红灯亮,亮60秒。

也可以在导入的资源包中更换组合红绿灯的样式。如下图:

-----------------------------------------------------------------<完>-------------------------------------------------------------

[Unity3D]用C#在unity里面写一个简单的红绿灯相关推荐

  1. unity绘制管道_在Unity里写一个纯手动的渲染管线(一)

    随着Unity3D 2018的面世,Scriptable Rendering Pipeline,也就是可编程渲染管线这项新技术变得家喻户晓.官方在推出这项技术的时候,着重强调了他的各种优点,而笔者总结 ...

  2. 用java做一个简单记事本_用记事本写一个简单的java程序

    用记事本写一个简单的java程序 第一步: 安装好jdk,并设置好环境变量. 桌面-计算机(右键)-属性-高级系统设置-环境变量-path-在变量值后加上:和jdk安装路径加上(路径即为C:\Prog ...

  3. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

  4. ipad php mysql_如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1

    原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app 作为一个i ...

  5. python123程序设计题说句心里话_用c++写一个简单的计算器程序

    // 050305.cpp : 定义控制台应用程序的入口点. // // 050304.cpp : 定义控制台应用程序的入口点. // //四则运算 #include "stdafx.h&q ...

  6. 用java写一个简单的区块链(下)

    用java写一个简单的区块链(下) 2018年03月29日 21:44:35 java派大星 阅读数:725 标签: 区块链java 更多 个人分类: 区块链 版权声明:本文为博主原创文章,转载请标明 ...

  7. 怎样用java写一个简单的文件复制程序

    怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...

  8. 给 asp.net core 写一个简单的健康检查

    给 asp.net core 写一个简单的健康检查 Intro 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供 ...

  9. linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手

    如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...

最新文章

  1. Spark RDD中cache和persist的区别
  2. 表达式x=x(x-1)
  3. Simple Polygon Embedding CodeForces - 1354C1(计算几何)
  4. Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息
  5. c语言中错误为ffblk未定义,C语言中头文件及函数的含意的总分类
  6. 【Kafka】KafkaConnection to 1002 was disconnected before the response was read
  7. C++ 常见错误(02) —— 将dll(用c++写的)处理的结果展示在界面上
  8. Java基础第三天复习
  9. ExtJS界面设计工具 Ext Designer
  10. 开源库实现SwitchButton开关按钮
  11. wind金融数据接口python_python使用用Wind接口获取全部A股历史交易数据
  12. 怎样拿下SUN公司的SCJP认证?
  13. 一篇博客学会了坦克大战
  14. VGG16各层处理过程
  15. python怎么绘制渐变图_有没有一种使用Python生成渐变位图的简单方法?
  16. TIOBE 2月榜单出炉:排行榜前8位在过去七年中排名没有变化,是否意味着编程语言没有变化?
  17. 卡西欧计算机如何取消g,卡西欧g-shock怎么关闭闹钟 gshock取消闹钟方法
  18. 【论文】龙王山小青椒 - 论文写作指导
  19. 给中国学生的第三封信
  20. 1977年失踪事件_1977年黄延秋事件,不是首次发生,古籍中的早已多次记录

热门文章

  1. nodejs项目云端部署初试
  2. Devops持续化集成
  3. 220413数据分析总结
  4. 拒绝踩坑!源码编译 tensorflow 解决 cuda 不配套 万金油方法
  5. Tomb.Finance的每周更新(5.2-5.8)
  6. 目前用下来最溜的MacOS微信多开工具!
  7. 性能优化系列:每个程序员都应该知道的数字
  8. Geometry Processing 几何处理 7
  9. python面向对象试题_python面向对象程序设计-中国大学mooc-试题题目及答案
  10. 灰度变换-分段线性函数