这里需要记住的,涉及到实例化的东西
GameObject chocolate = Instantiate(gridPrefab,new Vector3(x,y,0),Quaternion.identity);
这里需要记住的,涉及到实例化的东西
GameObject chocolate = Instantiate(gridPrefab,new Vector3(x,y,0),Quaternion.identity);
for (int i = 0; i < XColumn; i++) { for (int j = yRow; j >0; j--) { GameObject grid = Instantiate(GridPrefab, new Vector2(i-7.5f, j-5.5f), Quaternion.identity); grid.transform.SetParent(transform); } }
这样 也可以的
/// <summary>
/// X 增量,Y 增量
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
private Vector2 CorrectPosition(int x, int y)
{//格子实际需要 实例化的坐标等于 GameManager的X坐标 减去 大网络的一半,再加上x坐标,
float Cx= transform.position.x - (XColumn - 1f) / 2f + (float)x;
float Cy = transform.position.y - (yRow +1f) / 2f + (float)y;
return new Vector2(Cx, Cy);
}
注意random.range()包前不包后,
ctrl+k+u解锁快捷键
填充的核心算法
根据甜品的行为可分为:1.一般的(可以移动的)
2.特殊的(空的,即不能移动的)
表现形式是从上而下所以排除行列中对最后一行的遍历,从倒数第二行开始遍历,首先获取到甜品的位置信息,判断甜品的类型是否可以移动,若是,查看该位置的正下方是否为空甜品,若是空,则将该甜品的位置下移,在原有的位置上生成新的甜品;
注意:在整个甜品面板的第一行是较为特殊的,假设在这一行的上方还有一行,是用来填充第一行中的空甜品。
快捷键:生成属性:选中变量,Ctrl+r+e
创建一个游戏管理类
通过枚举定义甜品种类
通过字典将甜品的种类和物体(预制体)保存起来
如何将字典显示在unity的监视面板中
解决方案:通过结构体,在结构体中定义两个属性:type,prefab;
结构体的使用需要添加一个属性:[System.Serializable] 可序列化,定义一个结构体类型的二维数组,用来保存许多类型的甜品预制体。
如何将数组中的结构体
了解序列化和反序列化
在枚举中有行消除、列消除、标记类型
1为什么只有行遍历不满足才列遍历
2
每一个甜品遍历左下方正下方与右下方看是否为空,以某甜品为例右下方为空,此时让空物体的下一个甜品往上遍历,如果空甜品上方物体可以移动则可以让甜品往下移动(问题)
生成巧克力的位置可以用这个方法计算
new Vector3(x- (xColumn-1)/2f, y- (yRow - 1) / 2f, 0)
时间可以设置成无限时间
GameManager
1.框架:单例模式
2.行和列数变量(行=x;列=y)
3.网格对象
4.初始化行列的网格对象
5.设置行列网格
实例化巧克力X位置=GameManager位置的X坐标-大网格长度的一半+行列对应的x坐标
0+5-0=5
匹配算法有点绕 看不懂
特殊甜品的产生
如果消除到4个,可以在被消除的4个甜品的随机一个位置随机生成一个行消除或列消除的甜品
饼干障碍物的消除:
1.先获取到可以消除的甜品(
2.
填充,
1.最下面的一排是不需要判断的,因为不会往下移动了,从倒数第二排开始判断,
2.首先拿到位置上甜品的类型(空的或普通的),判断其当前是否可以移动,普通的可以移动
3.然后遍历甜品正下方的位置是否为空,若为空则可以移动,
4.甜品之前的位置会变空,那会在改位置生成新的甜品
5.最上面的一行如果为空的话,不能填充新的甜品,因为上面没有东西了,这时候应该要想到,在第一行那里产生负一行(用来产生元素),当判断第一行的某个位置为空时,在这个位置的正上方产生对应的甜品向下填充
给变量添加get set方法时,
要记得先声明
private ColorType color;
public ColorType Color
{
get { return color; }
set
{
color=value;
}
}
看到这里不得不说老师写的代码,一看就知道是经验丰富,在前期那一堆准备工作 我都听得一愣一愣的,现在听到这里,整个游戏逻辑结构,一下下就像拼图一样接起来了,每个脚本都像活了过来一样,清晰有序地分工着。