本次引擎2.0.5
编辑工具VSCode
如遇不会某个步骤可以先过一遍之前教程,或者下方评论,感谢支持!
目标:小明有一万个苹果
今天教大家学习预制资源与节点池;
我们肯定玩过射击类游戏,那许许多多的子弹,如果你一个一个弄会累死的。。。怎么办呢?
创建预制资源(就是一个模版);
然后我们用的时候用这个模版就行了。
好了,让我们先建个工程,顺手弄个单色背景:
保存场景为game;
好了,让我们创建一个红色的苹果(你们暂且认为它是苹果):
改了一下旋转度,大小;
好了,即将进行最重要的一步:脱下来!哦不,拖下来!
然后变成这样:
,好了,我们拥有了预制体哦!
然后我们弄个Label,代表小明!
怎么样,一个小明的苹果;但是我们的目标是一万个苹果!
别急,我们先1个个的来。
来,KUOKUO带你写脚本!
新建main.js然后绑定到Canvas上(总控制脚本)
好了,我们让脚本可爱起来!
接下来,我们声明一个apple类型为预制资源;
然后保存一下,把apple的预制资源拖过去:
然后写出克隆函数(就是按照预制资源的模版复制了一份);
把新克隆出来的apple也加入到this.node(就是绑定脚本的节点)
重新给个位置:
cc.Class({
extends: cc.Component,
properties: {
apple:cc.Prefab,
},
onLoad () {
// 克隆函数
var apple = cc.instantiate(this.apple);
this.node.addChild(apple);
apple.x = 100;
apple.y = 200;
},
start () {
},
});
怎么样,出来了吧!
好了,小明现在有两个苹果,我们的目标是一万个,好多呀,怎么办?
我们弄个节点池,顾名思义,许多节点的池子!!!!!!(神解释)
cc.Class({
extends: cc.Component,
properties: {
apple:cc.Prefab,
},
onLoad () {
// 定义并创建一个节点池
this.applePool = new cc.NodePool();
// 数量为10000
var initCount = 10000;
for (var i = 0; i < initCount; ++i) {
var apple = cc.instantiate(this.apple); // 克隆节点
this.applePool.put(apple); // 通过 put函数把节点放入对象池
}
// 这是加入一万个苹果节点
for (var i = 0; i < initCount; ++i) {
// 通过get函数用一个取一个
var apple = this.applePool.get();
this.node.addChild(apple);
}
},
});
怎么样,小明弄出了10000个苹果哦;但是因为节点太多,可能会出现错误。
我们用改成100个苹果的程序运行来展示一下:
嗯,100个大苹果排列这,电脑性能好的小伙伴可以去试试10000个苹果。
好了,今天就学到这。
O(∩_∩)O~~