手把手教你Unity开发俄罗斯方块

第十五节 生成方块 上

2019-06-24  本文已影响0人  安静的程序员

屏幕显示的问题已经解决了,现在需要一个类用来生成方块数据。目前,我将所有方块分成了7种,如下所示:



像这种情况用枚举来区分类型是最方便的,之前已经创建了一个脚本PublicData用了存放零碎数据,枚举类也可以放这里面:

// 方块类型
public enum EBlockType
{
    TYPE_INVALID,

    TYPE_T,
    TYPE_L_LEFT,
    TYPE_L_RIGHT,
    TYPE_Z_LEFT,
    TYPE_Z_RIGHT,
    TYPE_I,
    TYPE_O,

    TYPE_TEST
}

第一个值表示默认值,初始化时用,最后一个值是用于测试的,中间的值正好对应7种方块。

有了枚举之后,还需要一个类用于生成方块。在脚本文件夹中添加一个类:BlockCreator。
该类采用单例模式,有一个对外方法:CreateBlock(),返回一个方块数据,就是像素点列表。
下面来实现这个类:

01.首先是单例模式的实现
public class BlockCreator
{
    // 唯一的实例
    private static BlockCreator blockCreator = null;
    // 私有化构造方法
    private BlockCreator() { }
    // 获取实例
    public static BlockCreator GetInstance()
    {
        if (blockCreator == null) blockCreator = new BlockCreator();
        return blockCreator;
    }
}
02.添加创建方块方法
// 创建方块
public List<MyPoint> CreateBlock(EBlockType blockType)
{
    List<MyPoint> listPoint = new List<MyPoint>();

    switch (blockType)
    {
        case EBlockType.TYPE_T:
            break;
        case EBlockType.TYPE_L_LEFT:
            break;
        case EBlockType.TYPE_L_RIGHT:
            break;
        case EBlockType.TYPE_Z_LEFT:
            break;
        case EBlockType.TYPE_Z_RIGHT:
            break;
        case EBlockType.TYPE_I:
            break;
        case EBlockType.TYPE_O:
            break;
        case EBlockType.TYPE_TEST:
            break;
    }

    return listPoint;
}

本节先写一个框架,下一节来实现数据填充和随机类型。

代码链接:https://pan.baidu.com/s/1veDXFz3PRIJ0Vw9iBsSX9A
提取码:x3pb

上一篇 下一篇

猜你喜欢

热点阅读