[Unity3D]用C#在unity里面写一个简单的红绿灯
[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里面写一个简单的红绿灯相关推荐
- unity绘制管道_在Unity里写一个纯手动的渲染管线(一)
随着Unity3D 2018的面世,Scriptable Rendering Pipeline,也就是可编程渲染管线这项新技术变得家喻户晓.官方在推出这项技术的时候,着重强调了他的各种优点,而笔者总结 ...
- 用java做一个简单记事本_用记事本写一个简单的java程序
用记事本写一个简单的java程序 第一步: 安装好jdk,并设置好环境变量. 桌面-计算机(右键)-属性-高级系统设置-环境变量-path-在变量值后加上:和jdk安装路径加上(路径即为C:\Prog ...
- 如何搭建python框架_从零开始:写一个简单的Python框架
原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...
- 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 ...
- python123程序设计题说句心里话_用c++写一个简单的计算器程序
// 050305.cpp : 定义控制台应用程序的入口点. // // 050304.cpp : 定义控制台应用程序的入口点. // //四则运算 #include "stdafx.h&q ...
- 用java写一个简单的区块链(下)
用java写一个简单的区块链(下) 2018年03月29日 21:44:35 java派大星 阅读数:725 标签: 区块链java 更多 个人分类: 区块链 版权声明:本文为博主原创文章,转载请标明 ...
- 怎样用java写一个简单的文件复制程序
怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...
- 给 asp.net core 写一个简单的健康检查
给 asp.net core 写一个简单的健康检查 Intro 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供 ...
- linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手
如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...
最新文章
- Spark RDD中cache和persist的区别
- 表达式x=x(x-1)
- Simple Polygon Embedding CodeForces - 1354C1(计算几何)
- Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息
- c语言中错误为ffblk未定义,C语言中头文件及函数的含意的总分类
- 【Kafka】KafkaConnection to 1002 was disconnected before the response was read
- C++ 常见错误(02) —— 将dll(用c++写的)处理的结果展示在界面上
- Java基础第三天复习
- ExtJS界面设计工具 Ext Designer
- 开源库实现SwitchButton开关按钮
- wind金融数据接口python_python使用用Wind接口获取全部A股历史交易数据
- 怎样拿下SUN公司的SCJP认证?
- 一篇博客学会了坦克大战
- VGG16各层处理过程
- python怎么绘制渐变图_有没有一种使用Python生成渐变位图的简单方法?
- TIOBE 2月榜单出炉:排行榜前8位在过去七年中排名没有变化,是否意味着编程语言没有变化?
- 卡西欧计算机如何取消g,卡西欧g-shock怎么关闭闹钟 gshock取消闹钟方法
- 【论文】龙王山小青椒 - 论文写作指导
- 给中国学生的第三封信
- 1977年失踪事件_1977年黄延秋事件,不是首次发生,古籍中的早已多次记录