12901人加入学习
(90人评价)
Unity2D 中级案例-甜品消消乐(Unity2017.2)

制作于2018年1月6日

价格 免费

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()包前不包后,

[展开全文]

填充的核心算法

根据甜品的行为可分为: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;
        }
    }

[展开全文]

看到这里不得不说老师写的代码,一看就知道是经验丰富,在前期那一堆准备工作 我都听得一愣一愣的,现在听到这里,整个游戏逻辑结构,一下下就像拼图一样接起来了,每个脚本都像活了过来一样,清晰有序地分工着。

[展开全文]

甜品的类型枚举,结构体,字典的创建

[展开全文]