从0开始用CocosCreator开发兔了个兔消消乐小游戏(四)

144 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情

上次说到了元素块预制体的制作,今天我们继续,因为要设置每个元素块的位置,因此我们我们做一个编辑器,通界面上添加元素块,然后获取到的所有的元素块的坐标,用来定义每一关的元素块坐标。

1. 先制作编辑模式下的元素块预制体

(1)在Canvas下新建一个Sprite(精灵),并且命名为parentEdit image.png

(2)调整大小和颜色 image.png

(3)将节点parentEdit拖动到prefab文件夹里 image.png

(4)将节点parentEdit删除,这样编辑模式下的元素就制作完了

2.打开game.ts脚本

(1)添加装饰器

    @property({type:Prefab})

    preBlockEdit=null

(2)注意,记得引用Prefab image.png

(3)关联预制体 image.png

3.(1)在Canvas下新建一个空节点,并且命名为parentEdit,用作编辑模式下的页面 image.png

(2)添加装饰器

    @property({type:Node})

    parentEdit=null

(4)关联节点 image.png

3.打开game.ts脚本

(1)添加定义,用来判断是否编辑模式。

  isEditing: boolean;

(2)是否处于编辑模式,取决于parentEdit的 active,因此在start函数里加入

 this.isEditing=this.parentEdit.active

这样就可以通面板上来控制是否进入编辑模式了

(3)增加crateBlocksEdit函数,用来创建编辑模式下的网格,后面会在网格上显示元素块

    crateBlocksEdit(){

        let i_num=14 //行

        let j_num =15 //  列

        let num_zhongJian=i_num/2

        for (let i = 0; i < i_num; i++) {

            for (let j = 0; j < j_num; j++) {

                let node_block_eidt= instantiate(this.preBlockEdit)

                node_block_eidt.parent=this.parentEdit

                node_block_eidt.setPosition(i*42-(i_num-1)40 / 2,j45-200,0)

                if(i_num % 2 ==0){

                    if(i==num_zhongJian || i==num_zhongJian-1){

                        node_block_eidt.getComponent(Sprite).color= new Color(255,0,0,98)

                    }

                }else{

                    if(i==Math.floor(num_zhongJian)){

                        node_block_eidt.getComponent(Sprite).color= new Color(255,0,0,98)

                    }

                }    

            }  

        }

    }

(4)注意,要引入instantiate, Sprite,Color image.png

(5)显示效果如下

image.png

4.打开game.ts脚本

(1)定义numTypeEdit,用来区别编辑模式下,是增加玩元素块还是减少元素块

 numTypeEdit: number;

(2)在start函数里初始化

  this.numTypeEdit=1//1加  0减

(3)增加onTouchStart函数

    onTouchStart(event: EventTouch) {}

(4)也要引入EventTouch image.png

(6)增加装饰器

    @property({type:Prefab})

PreBlock=null

(7)关联block预制体 image.png

今天就到这里了,主要说编辑模块的一些功能点,但还没有完善,下次再继续完善。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家