易游网-易游模拟器

 找回密码
 立即注册
查看: 1778|回复: 0

[游戏开发] CocosCreator 加载与切换场景、定时器的使用

[复制链接]

1406

主题

1663

帖子

1万

积分

管理员

夏墨独周

Rank: 9Rank: 9Rank: 9

积分
10094

论坛元老技术达人

QQ
发表于 2020-7-31 22:26:55 | 显示全部楼层 |阅读模式
一、加载与切换场景
代码:cc.director.loadScene("SceneName");

1. 通过常驻节点进行场景资源管理和参数传递
引擎同时只会运行一个场景,当切换场景时,默认会将场景内所有节点和其他实例销毁。如果我们需要用一个组件控制所有场景的加载,或在场景之间传递参数数据,就需要将该组件所在节点标记为「常驻节点」,使它在场景切换时不被自动销毁,常驻内存。

标记常驻节点:cc.game.addPersistRootNode(myNode);
取消常驻节点 :cc.game.removePersistRootNode(myNode);

需要注意的是上面的 API 并不会立即销毁指定节点,只是将节点还原为可在场景切换时销毁的节点。

2. 场景加载回调
代码:cc.director.loadScene("SceneName", onSceneLaunched);
上一行里 onSceneLaunched 就是声明在本脚本中的一个回调函数,在场景加载后可以用来进一步的进行初始化或数据传递的操作。
由于回调函数只能写在本脚本中,所以场景加载回调通常用来配合常驻节点,在常驻节点上挂载的脚本中使用。

3. 预加载场景
后台静默加载新场景,并在加载完成后手动进行切换。
cc.director.preloadScene("SceneName", function () {
   cc.log("scene preloaded");
});
之后在合适的时间调用 loadScene , 就可以真正切换场景。
cc.director.loadScene("SceneName");
就算预加载还没完成,你也可以直接调用 cc.director.loadScene ,预加载完成后场景就会启动。

二、使用计时器
也许有人会认为 setTimeout 和 setInterval 就足够了,开发者当然可以使用这两个函数,不过我们更推荐使用计时器,因为它更加强大灵活,和组件也结合得更好!

首先,先创建一个指向某个组件的变量,变量名为 component

// 1. 开始一个计时器
component.schedule(function() {
     // 这里的 this 指向 component
     this.doSomething();
}, 5);// 计时器将每隔 5s 执行一次。

// 2. 更灵活的计时器
var interval = 5;// 以秒为单位的时间间隔
var repeat = 3; // 重复次数
var delay = 10; // 开始延时
component.schedule(function() {
     // 这里的 this 指向 component
     this.doSomething();
}, interval, repeat, delay); // 10 秒后开始计时,每 5 秒执行一次,执行 3 + 1 次。

// 3. 只执行一次的计时器(快捷方式)
component.scheduleOnce(function() {
     // 这里的 this 指向 component
     this.doSomething();
}, 2);// 上面的计时器将在两秒后执行一次回调函数,之后就停止计时。


// 4. 取消计时器
// 开发者可以使用回调函数本身来取消计时器:
this.count = 0;
this.callback = function () {
     if (this.count === 5) {
         // 在第六次执行回调时取消这个计时器
         this.unschedule(this.callback);
     }
     this.doSomething();
     this.count++;
}
component.schedule(this.callback, 1);
// 5. 取消组件所有的计时器
this.unscheduleAllCallbacks();
注意:组件的计时器调用回调时,会将回调的 this 指定为组件本身,因此回调中可以直接使用 this 。


来源:易游模拟器(QQ:207621422),转载请注明出处!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易游网-易游模拟器 Copyright @2015-2021 ( 浙ICP备15028007号-1 )

GMT+8, 2024-4-28 18:16 , Processed in 0.027345 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表