unity红绿灯功能的实现
unity红绿灯功能的实现
红绿灯功能的实现:
使用状态机来实现红、黄、绿三个灯的切换。首先创建一个LightState类,继承BaseGameEntity类。
LightState状态初始化类:
在LightState类中定义状态机:sm_LightState 设置为一个公共的方法,给LightSwitchover状态切换类调用。
在LightState类中,定义一个folat中间公共自动属性(RemainingTime)来获取红、黄、绿、闲置这四个状态的时限。
初始化4个状态的时限,红灯为33s,绿灯为30s,黄灯为0.5s,黄灯的闲置状态时限为0.5s 定义3个GameObject类型的公共自动属性,用来获取红绿灯中的红灯、绿灯、黄灯的游戏对象,分别是:Red、Green、Yellow
定义StateLights,string类型的公共的自动属性,用来获取当前红绿灯的状态,给碰撞检测使用。
定义一个公共的int类型的变量Transitions。用来设置每个红绿灯的初始状态。0初始状态设置为“绿灯状态”sm_LightState.SetCurrentState(GreenLight_State.Instance());。大于0初始状态设置为“红灯状态” sm_LightState.SetCurrentState(RedLight_State.Instance());
LightSwitchover状态切换类:
定义红灯状态类,继承State<LightState>并实现State中的抽象方法,Enter()(进入状态)、Execute()(执行状态)、Exit()(退出状态)。设置单例模式:RedLight_State。
进入Enter()
1,调用LightState类中的公共自动属性StateLights,赋一个字符串“StateLight_Red”|entityType.StateLights = "StateLight_Red";| StateLight_Red表示为红灯状态。
2,然后判断红灯对象是否为空,不为空,则将其设置为ture。
“entityType.Red.light.enabled = true;”打开红灯
3,初始化黄灯闪烁的次数:entityType.next = 3;
4,调用LightState类中,folat类型的中间公共自动属性(RemainingTime)获取红灯状态的时限:entityType.RemainingTime = entityType.redLightTime;
进入Execute()
1,设置红灯状态剩余时间,Time.fixedDeltaTime为固定的增量时间:
entityType.RemainingTime -= Time.fixedDeltaTime;
2,判断当前红灯剩余时间是否小于等于0,如果条件成立,则切换为绿灯状态: entityType.GetLight().ChangeState(GreenLight_State.Instance());
进入Exit()
1,判断红灯对象Red是否为NULL,不为NULL时,条件成立,将红灯关闭:
entityType.Red.light.enabled = false;
定义绿灯状态类,继承State<LightState>并实现State中的抽象方法,Enter()(进入状态)、Execute()(执行状态)、Exit()(退出状态)。设置单例模式:GreenLight_State。
进入Enter()
1,调用LightState类中的公共自动属性StateLights,赋一个字符串“StateLight_Green”|entityType.StateLights = "StateLight_Green";| StateLight_Green表示为绿灯状态。
unity红绿灯功能的实现
2,判断绿灯对象是否为空,不为空,则将其设置为ture。
“entityType.Green.light.enabled = true;”打开绿灯
3,调用LightState类中,folat类型的中间公共自动属性(RemainingTime)获取绿灯状态的时限:entityType.RemainingTime = entityType.GreenLightTime;
进入Execute()
1,设置绿灯状态剩余时间,Time.fixedDeltaTime为固定的增量时间:
entityType.RemainingTime -= Time.fixedDeltaTime;
2,判断当前绿灯剩余时间是否小于等于0,如果条件成立,则切换为黄灯状态: entityType.GetLight().ChangeState(Yellowight_State.Instance());
进入Exit()
1,判断绿灯对象Green是否为NULL,不为NULL时,条件成立,将绿灯关闭:
entityType.Green.light.enabled = false;
定义黄灯状态类,继承State<LightState>并实现State中的抽象方法,Enter()(进入状态)、Execute()(执行状态)、Exit()(退出状态)。设置单例模式:YellowLight_State。
进入Enter()
1,调用LightState类中的公共自动属性StateLights,赋一个字符串“StateLight_Yellow”|entityType.StateLights = "StateLight_Yellow";| StateLight_Yellow表示为绿灯状态。2,判断黄灯对象是否为空,不为空,则将其设置为ture。
“entityType.Yellow.light.enabled = true;”打开黄灯
3,调用LightState类中,folat类型的中间公共自动属性(RemainingTime)获取黄灯状态的时限:entityType.RemainingTime = entityType.YellowLightTime;
进入Execute()
1,设置黄灯状态剩余时间,Time.fixedDeltaTime为固定的增量时间:
entityType.RemainingTime -= Time.fixedDeltaTime;
2,判断当前黄灯剩余时间是否小于等于0,如果条件成立,再判断黄灯闪烁次数是否不等于1,如果条件成立,
则切换为黄灯闲置状态:
entityType.GetLight().ChangeState(IdleLight_State.Instance());
否则,切换为红灯状态:
entityType.GetLight().ChangeState(RedLight_State.Instance());
进入Exit()
1,判断黄灯对象Yellow是否为NULL,不为NULL时,条件成立,将黄灯关闭:
entityType.Yellow.light.enabled = false;
2,初始化黄灯闲置状态时限:
entityType.idleLightTime = 0.5f;
定义黄灯闲置状态类,继承State<LightState>并实现State中的抽象方法,Enter()(进入状态)、Execute()(执行状态)、Exit()(退出状态)。设置单例模式:IdleLight_State。
unity红绿灯功能的实现
进入Enter()
1,调用LightState类中,folat类型的中间公共自动属性(RemainingTime)获取黄灯闲置状态的时限:entityType.RemainingTime = entityType.idleLightTime;
进入Execute()
1,设置黄灯状态剩余时间,Time.fixedDeltaTime为固定的增量时间:
entityType.RemainingTime -= Time.fixedDeltaTime;
2,判断当前黄灯闲置状态剩余时间是否小于等于0,如果条件成立,则切换为黄灯闲置状态:
entityType.GetLight().ChangeState(IdleLight_State.Instance());
进入Exit()
1,黄灯闪烁次数,减1:
entityType.next--;
…… 此处隐藏:1636字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




