// Use this for initialization void Start() { //读取配置和解析数据 InitData(); //初始化游戏背景 InitGameBg(); //加载资源 InitResources(); //初始化关卡数据,如通过目标,数量,步数 InitPlayLevelMsg(); //初始化方块 InitGrid(); //初始化关卡完成界面 InitFinishPlayLevel(); openEditorButton.transform.SetAsLastSibling();//设置编辑器开关的渲染顺序为最后 //传递数据 GridConn.InitGridUIAttribute(); GridDrop.InitGridUIAttribute(); GridReset.InitGridUIAttribute(); }
// Use this for initialization void Start() { //读取配置和解析数据 initData(); //初始化游戏背景 initGameBg(); //加载资源 initResources(); //初始化关卡数据,如通过目标,数量,步数 initPlayLevelMsg(); //初始化方块 initGrid(); //初始化关卡完成界面 initFinishPlayLevel(); //传递数据 GridConn.initGridUIAttribute(); GridDrop.initGridUIAttribute(); GridReset.initGridUIAttribute(); }
// Update is called once per frame void Update() { //获取第一个点中的方块信息 if (Input.GetMouseButtonDown(0)) { GetStartGrid(); } //判断移动后的下一个方块是否与第一个方块类型相同 if (Input.GetMouseButton(0)) { GetNextGridAndDrawLine(); } //松手后判断方块连接数是否可消除,并进行冰块、雪块等判断消除和掉落信息记录 if (Input.GetMouseButtonUp(0)) { UpdateUIAndGirdMsg(); } //执行方块掉落 GridDrop.Drop(); }
private void UpdateUIAndGirdMsg() { //[1]在格子区域抬起鼠标,则默认用户希望消除方块,否则则撤销消除 if (Input.mousePosition.x > x && Input.mousePosition.x < (x + mGridSize * mGameData.vertical + mIntervalPx * (mGameData.vertical - 1)) && Input.mousePosition.y < y && Input.mousePosition.y > (y - ((mGameData.horizontal * mGridSize + mIntervalPx * (mGameData.horizontal - 1))))) { if (drawCounts >= 2) { isRemovePoison = false; //优先判断是否有特效方块 foreach (GridBean gridBean in lineConnectGridList) { //TODO 实现特效方块消除效果 if (gridBean.specialTpye >= 0) { RemoveSpecialGrid(gridBean); } } //判断是否需要消除lineConnectGridList剩余的普通方块 foreach (GridBean gridBean in lineConnectGridList) { int v = gridBean.vertical; int h = gridBean.horizontal; isDestroyGrid = false; for (int removeIndex = 0; removeIndex < mGridListManager[v].Count; removeIndex++) { if (mGridListManager[v][removeIndex].horizontal == h) { //[2]计算是否消除了目标类型 if (gridBean.spriteIndex == mEditorData.targetType) { deleteCounts++; } //[3]判断方块上方是否有树藤 if (mGridBaseListManager[v][h].spriteIndex == 21) { foreach (TimboBean timboBean in mTimboDataList) { if (timboBean.timboVertical == v && timboBean.timboHorizontal == h) { Destroy(timboBean.timbo); mTimboDataList.Remove(timboBean); mGridBaseListManager[v][h].spriteIndex = 0; break; } } } else { mGridBaseListManager[v][h].isHasGrid = false; mGridListManager[v].RemoveAt(removeIndex); isDestroyGrid = true; } break; } } //[3]判断方块底部是否有冰块 if (mIceDataList != null) { foreach (IceBean iceBean in mIceDataList) { if (iceBean.iceVertical == v && iceBean.iceHorizontal == h) { mIceLevel = iceBean.iceLevel; if (mIceLevel > 0) { mIceLevel--; if (mIceLevel > 0) { iceBean.ice.GetComponent <Image>().sprite = mAllSprites[mIceLevel + 9]; iceBean.iceLevel = mIceLevel; } else { if (mEditorData.targetType == 11) { deleteCounts++; } Destroy(iceBean.ice); mIceDataList.Remove(iceBean); } } break; } } } //[4]判断消除附近是否有雪块 if (mFrostingList != null) { CheckFrosting(gridBean); } //[5]判断消除附近是否有毒液 if (mPoisonList != null) { CheckPoison(gridBean); } //[6]消除方块 if (isDestroyGrid) { Destroy(gridBean.gridObject); } } //[7]还原雪块消除信息 if (mFrostingList != null) { for (int i = 0; i < mFrostingList.Count; i++) { mFrostingList[i].isFrostingRemove = false; } } //[8]判断是否生成特效方块 //产生魔力鸟 if (lineConnectGridList.Count >= 10) { CreateSpecialGrid(0); } else { if (lineConnectGridList.Count >= 6) { int startV = lineConnectGridList[0].vertical; int startH = lineConnectGridList[0].horizontal; //判断都在同一列或者同一行,产生横竖直线特效方块 bool isTheSameVertical = true; foreach (GridBean g in lineConnectGridList) { if (g.vertical != startV) { isTheSameVertical = false; break; } } //产生竖线特效 if (isTheSameVertical) { CreateSpecialGrid(1); } else { bool isTheSameHorizontal = true; foreach (GridBean g in lineConnectGridList) { if (g.horizontal != startH) { isTheSameHorizontal = false; break; } } //产生横线特效 if (isTheSameHorizontal) { CreateSpecialGrid(2); } else//若不为上述两种情况,则产生爆炸方块 { CreateSpecialGrid(3); } } } } //[9]检查是否需要生成毒液 CheckIsCreatePoison(); //[10]记录方块掉落信息 GridDrop.RecordGridDropMsg(); //[11]刷新步数信息 mEditorData.stepCounts--; if (mEditorData.targetType == 13) { mIsCreateBeanPod--; } if (mEditorData.stepCounts > 0) { mStepCounts.GetComponent <Text>().text = mEditorData.stepCounts.ToString(); if (mEditorData.targetType == 13 && mIsCreateBeanPod == 0) { CreateBeanPod(); } } else { //[11.1]已没有步数,提示失败 } //[12]刷新目标数量 UpdateTargetCounts(deleteCounts); } } //[13]移除线段对象和线段数量 if (lineObjList.Count > 0) { foreach (GameObject obj in lineObjList) { Destroy(obj); } lineObjList.Clear(); } drawCounts = 0; //[14]移除lineConnectGridList的内容 lineConnectGridList.Clear(); }