美文网首页手把手教你Unity开发俄罗斯方块
第十二节 在主屏幕类中加入图层

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

作者: 安静的程序员 | 来源:发表于2019-06-24 09:31 被阅读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

    相关文章

      网友评论

        本文标题:第十二节 在主屏幕类中加入图层

        本文链接:https://www.haomeiwen.com/subject/rhtnqctx.html