购物网站服务器价格,互联网企业公司简介,站群管理系统,东莞网网站公司简介Siki学院2023的PVZ免费了#xff0c;学一下也坏 卡片状态 卡片可以有三种状态#xff1a;
1.阳光足够#xff0c;#xff08;且cd好了可以种植#xff09;
2.阳光不够#xff0c;#xff08;cd#xff1f;好了#xff1a;没好 #xff08;三目运算符#xff09;学一下也坏 卡片状态 卡片可以有三种状态
1.阳光足够且cd好了可以种植
2.阳光不够cd好了没好 三目运算符
3.开始转cd被种下 状态切换是单向循环的只有a到b没有a到c所以不会互相干扰所以上面括号内的内容可以不用考虑
转换状态触发条件
因为教程中使用的是枚举配合Switch切换状态
public class ControlState : MonoBehaviour
{public enum Card_State{ //准备就绪E_Ready,//CdE_Cd,//cd结束等待阳光E_WaitingSun}//三种状态的对象public GameObject Light;public GameObject WaitSun;public Image LayerMask;Card_State state;//计时器变量public float ReadNeedTime 2;public float CdTime 0;//需要阳光数public int needSunPoint 50;private void Awake() {//初始状态表现一下Cd冷却state Card_State.E_Cd;}private void Update() {switch (state) {case Card_State.E_Ready:ReadyUpdate();break;case Card_State.E_Cd:CDUpdate();break;case Card_State.E_WaitingSun:WaitingSunUpdate();break;default:throw new System.NotImplementedException(未正确返回枚举类型);}}/// summary/// 阳光不够就切换回等待状态/// /summarypublic void ReadyUpdate(){if (needSunPoint SunManger.Instance.SunPoint) {Translate2WaitSun();}}/// summary/// 转cd如果cd转完了则转到等待阳光阶段/// /summarypublic void CDUpdate(){ //计时器变0将图片设置为WaitingSun状态CdTime Time.deltaTime;LayerMask.fillAmount (ReadNeedTime - CdTime) / ReadNeedTime;if (CdTimeReadNeedTime){Translate2WaitSun();}}/// summary/// 阳光足够则转为准备好的阶段/// /summarypublic void WaitingSunUpdate() {if (needSunPoint SunManger.Instance.SunPoint){Translate2Ready();}}
让我想想从难度低到难度高还有几种方式可以切换状态
1.if else 我以切换条件定义一堆变量可以实现条件切换
2.事件写了这么多函数是否可以用Unity.Event的配合UGUI来切换呢有待考究 胡说但是说不定可行3.状态机 4.行为树 转换状态中要处理的逻辑 /// summary/// 转换方法2WaitSun/// /summarypublic void Translate2WaitSun(){state Card_State.E_WaitingSun;LayerMask.gameObject.SetActive(false);Light.SetActive(false);WaitSun.SetActive(true);//重置计时器CdTime 0;}/// summary/// 转换方法2Ready/// /summarypublic void Translate2Ready(){state Card_State.E_Ready;LayerMask.gameObject.SetActive(false);Light.SetActive(true);WaitSun.SetActive(false);}/// summary/// 转换方法2Cd/// /summarypublic void Translate2Cd() {state Card_State.E_Cd;LayerMask.gameObject.SetActive(true);Light.SetActive(false);WaitSun.SetActive(true);}/// summary/// Ready下被点击将会进入cd/// /summarypublic void OnClick(){//阳光检查if (needSunPoint SunManger.Instance.SunPoint)return;//TODO:被种植//转入cd状态Translate2Cd();}
}