/// <summary> /// 从方块相邻状态得到贴图 /// </summary> /// <param name="up">上面相邻状态</param> /// <param name="down">下面相邻状态</param> /// <param name="left">左边相邻状态</param> /// <param name="right">右边相邻状态</param> /// <returns>贴图编号</returns> public void SpriteOut(NearbyState up, NearbyState down, NearbyState left, NearbyState right) { List <int> outer = new List <int>(); List <int> upArray = new List <int>(), downArray = new List <int>(), leftArray = new List <int>(), rightArray = new List <int>(); //对四个方向状态进行判断 switch (up) { case NearbyState.DIFID: upArray = UpDifId.ToList(); break; case NearbyState.NULL: upArray = UpNull.ToList(); break; case NearbyState.SAMEID: upArray = UpSameId.ToList(); break; } switch (down) { case NearbyState.DIFID: downArray = DownDifId.ToList(); break; case NearbyState.NULL: downArray = DownNull.ToList(); break; case NearbyState.SAMEID: downArray = DownSameId.ToList(); break; } switch (left) { case NearbyState.DIFID: leftArray = LeftDifId.ToList(); break; case NearbyState.NULL: leftArray = LeftNull.ToList(); break; case NearbyState.SAMEID: leftArray = LeftSameId.ToList(); break; } switch (right) { case NearbyState.DIFID: rightArray = RightDifId.ToList(); break; case NearbyState.NULL: rightArray = RightNull.ToList(); break; case NearbyState.SAMEID: rightArray = RightSameId.ToList(); break; } outer = upArray.ToList().Intersect(downArray).Intersect(leftArray).Intersect(rightArray).ToList(); Debug.Log(outer[0]); GetComponent <SpriteRenderer>().sprite = StateSprites[outer[outer.Count - 1]]; }
/// <summary> /// 飞船刷新相邻状态时调用该函数 /// </summary> public void OnRefresh() { NearbyState up = 0, down = 0, left = 0, right = 0; //up if (UpBlock == null) { up = NearbyState.NULL; } else if (UpBlock.Id == Id) { up = NearbyState.SAMEID; } else { up = NearbyState.DIFID; } //down if (DownBlock == null) { down = NearbyState.NULL; } else if (DownBlock.Id == Id) { down = NearbyState.SAMEID; } else { down = NearbyState.DIFID; } //left if (LeftBlock == null) { left = NearbyState.NULL; } else if (LeftBlock.Id == Id) { left = NearbyState.SAMEID; } else { left = NearbyState.DIFID; } //right if (RightBlock == null) { right = NearbyState.NULL; } else if (RightBlock.Id == Id) { right = NearbyState.SAMEID; } else { right = NearbyState.DIFID; } if (BlockStateChangeEventInt != null) { BlockStateChangeEventInt(up, down, left, right); } }