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

制作于2018年1月6日

价格 免费

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

[展开全文]

从下往上遍历

为什么我的是往上移动?

[展开全文]

创建一个游戏管理类

通过枚举定义甜品种类

通过字典将甜品的种类和物体(预制体)保存起来

如何将字典显示在unity的监视面板中

解决方案:通过结构体,在结构体中定义两个属性:type,prefab;

结构体的使用需要添加一个属性:[System.Serializable] 可序列化,定义一个结构体类型的二维数组,用来保存许多类型的甜品预制体。

如何将数组中的结构体

 

 

 

了解序列化和反序列化

 

在枚举中有行消除、列消除、标记类型

[展开全文]

填充的核心算法

根据甜品的行为可分为:1.一般的(可以移动的)

2.特殊的(空的,即不能移动的)

表现形式是从上而下所以排除行列中对最后一行的遍历,从倒数第二行开始遍历,首先获取到甜品的位置信息,判断甜品的类型是否可以移动,若是,查看该位置的正下方是否为空甜品,若是空,则将该甜品的位置下移,在原有的位置上生成新的甜品;

注意:在整个甜品面板的第一行是较为特殊的,假设在这一行的上方还有一行,是用来填充第一行中的空甜品。

 

 

 

[展开全文]

//从下往上遍历 得到每排最下空白处 和 最上空白处的距离 for (int x = 0; x < xColumn; x++) { //没障碍物的情况下 int min = 0; int max = yRow-1; for (int y = min; y <= max; y++) { GameSweet gameSweet = CreateNewSweet(x, y, SweetsType.NORMAL); gameSweet.ColoredComponent.SetColor((ColorSweet.ColorType)UnityEngine.Random.Range(0, gameSweet.ColoredComponent.NumColor)); } }

[展开全文]

给变量添加get set方法时,

要记得先声明

 private ColorType color;

    public ColorType Color
    {
        get { return color; }
        set
        {
           color=value;
        }
    }

[展开全文]

填充,

1.最下面的一排是不需要判断的,因为不会往下移动了,从倒数第二排开始判断,

2.首先拿到位置上甜品的类型(空的或普通的),判断其当前是否可以移动,普通的可以移动

3.然后遍历甜品正下方的位置是否为空,若为空则可以移动,

4.甜品之前的位置会变空,那会在改位置生成新的甜品

5.最上面的一行如果为空的话,不能填充新的甜品,因为上面没有东西了,这时候应该要想到,在第一行那里产生负一行(用来产生元素),当判断第一行的某个位置为空时,在这个位置的正上方产生对应的甜品向下填充

[展开全文]

二维数组 甜品数组的实例化

甜品的位置int x,y

甜品的种类【不需要set】

public GameManager gameManager;

 

初始化方法Init()

[展开全文]

实例化甜品

使用一个二维数组来存储Prefab

创建一个脚本用来对甜品进行一些基本的操作

[展开全文]

MovedSweet脚本;拿到GameSweet sweet;

 

public void Move(int newX,int  newX)

 

新添加变量 移动 MoveComponent

判断是否移动的方法

 

[展开全文]

暂时的理解:创建这个基础脚本的用意可以从GameManager脚本可以看出,直接获取这个脚本,方便使用这个脚本中的方法。之前是获取的游戏物体,想要使用脚本中的方法需要通过游戏物体去访问脚本,从而使用方法。

[展开全文]

生成巧克力的位置可以用这个方法计算

 

new Vector3(x- (xColumn-1)/2f, y- (yRow - 1) / 2f, 0)

[展开全文]

定义水果类型用枚举的方法

用结构体对致电3进行添加

[展开全文]

饼干障碍物的消除:

1.先获取到可以消除的甜品(

2.

[展开全文]

直线匹配

将同一类型的棋子加入行遍历列表,若最终行遍历(左,右)列表 >= 3,消除棋子。

<3则进行列遍历,将同一类型的棋子加入列遍历列表

返回

[展开全文]

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(1)
视频(49)

学员动态