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

第十二节 在主屏幕类中加入图层

2019-06-24  本文已影响0人  安静的程序员
01.添加图层列表成员

打开主屏幕类,添加代码:

List<Layer> _layerList;     // 图层列表
02.添加默认图层

我的设定是即使没有任何图形需要显示,也要添加一个空白的图层,因为图形是以图层为单位进行叠加的,所以至少需要一个图层。
编辑代码,在主屏幕类中添加一个方法:

// 初始化图层
void InitLayer()
{
    _layerList = new List<Layer>();

    // 新建默认图层
    Layer defaultLayer = new Layer();
    defaultLayer.Name = "DefaultLayer";
    // 添加至图层列表
    _layerList.Add(defaultLayer);
}
03.重构初始化方法

当代码量增加,结构变得复杂、混乱时,必须要保证代码结构的简洁,这在团队合作时非常重要,要有出现混乱时立即重构代码的习惯。
到目前,初始化工作分为了初始化屏幕(创建像素点阵列)和初始化图层,初始化图层已经写好了,还需要写一个初始化屏幕的方法,然后将之前写在初始化方法中的代码转移至新方法:

// 初始化屏幕
void InitScreen()
{
    // 创建空数组
    _screen = new GameObject[_ScreenHeight, _ScreenWidth];

    // 遍历行
    for (int line = 0; line < _ScreenHeight; line++)
    {
        // 遍历列
        for (int list = 0; list < _ScreenWidth; list++)
        {
            // 计算坐标
            int x = _ScreenPoint_x + list * (_PixelSize + _PixelInterval);
            int y = _ScreenPoint_y + line * (_PixelSize + _PixelInterval);
            Vector3 point = new Vector3(x, y, 0);
            // 实例化像素点
            GameObject pixel = Instantiate(Pixel, point, Quaterni-on.identity) as GameObject;
            // 将像素点对象绑定至数组中对应的对象
            _screen[line, list] = pixel;
        }
    }
}

在初始化方法中调用初始化屏幕和初始化图层方法:

// 初始化
public void Init()
{
    InitScreen();
    InitLayer();
}
04.添加方法——添加图层与获取图层

除了默认图层外,肯定还需要新的图层,所以先添加一个“添加图层”的方法;然后要在图层上添加显示数据的话,肯定要先获取图层,下面就是两个方法的代码:

// 添加图层
public void AddLayer(string layerName)
{
    Layer defaultLayer = new Layer();
    defaultLayer.Name = layerName;
    // 添加至图层列表
    _layerList.Add(defaultLayer);
}

// 获取图层
public Layer GetLayer(string layerName)
{
    foreach (var item in _layerList)
    {
        if (item.Name == layerName) return item;
    }

    return null;
}

关于图层的代码就先告一段落了,接下来,我们要尝试来显示点图形了。

代码链接:https://pan.baidu.com/s/1hqJeMrZ572_hco6PCmFM1w
提取码:e7kk

上一篇 下一篇

猜你喜欢

热点阅读