前端之家收集整理的这篇文章主要介绍了
Cocos Creator 脚本执行顺序(摘自官方文档),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
脚本执行顺序
@H_
403_2@ 完善的脚本执行顺序控制将在新版本中
添加,目前请使用下面的原则控制脚本执行顺序:
使用统一的控制脚本来初始化其他脚本
@H_
403_2@ 一般我都会有一个
Game.js
的脚本作为总的控制脚本,假如我还有
Player.js
,
Enemy.js
,monospace; font-size:13.6px; line-height:normal; padding:0.2em 0px; margin:0px">Menu.js三个组件,那么他们的初始化过程是这样的:
const Player = require('Player');
const Enemy = 'Enemy');
const Menu = 'Menu');
cc.Class({
extends: cc.Component,properties: {
player: Player,enemy: Enemy,menu: Menu
},onLoad: function () {
this.player.init();
this.enemy.init();
this.menu.init();
}
});
@H_
403_2@ 其中在
Enemy.js
和
Menu.js
中需要实现
init
方法,并将初始化逻辑放进去。这样我们就可以保证 Player,Enemy 和 Menu 的初始化顺序。
在 Update 中用自定义方法控制更新顺序
@H_
403_2@ 同理如果要保证以上三个脚本的每帧更新顺序,我们也可以将分散在每个脚本里的
update
替换成自己定义的
方法:
// Player.js
updatePlayer: function (dt) {
}
@H_
403_2@ 然后在
Game.js
脚本的
update
里
调用这些
方法:
// Game.js
update: function (dt) {
this.player.updatePlayer(dt);
this.enemy.updateEnemy(dt);
this.menu.updateMenu(dt);
}
控制同一个节点上的组件执行顺序
@H_
403_2@ 在同一个节点上的组件脚本执行顺序,是可以通过组件在
属性检查器里的排列顺序来控制的。排列在上的组件会先于排列在下的组件执行。我们可以通过组件右上角的齿轮按钮里的
Move Up
和
Move Down
菜单来调整组件的排列顺序和执行顺序。
@H_
403_2@ 假如我们有两个组件 CompA 和 CompB,他们的
内容分别是:
// CompA.js
cc.Class({
extends: cc.Component,
onLoad: function () {
cc.log('CompA onLoad!');
},start: function () {
cc.log('CompA start!');
},136); font-style:italic">// called every frame,uncomment this function to activate update callback
update: function (dt) {
cc.log('CompA update!');
},});
cc.Class({
extends: cc.Component,68)">'CompB onLoad!');
},68)">'CompB start!');
},68)">'CompB update!');
},});
@H_
403_2@ 组件顺序 CompA 在 CompB 上面时,
输出:
CompA onLoad!
CompB onLoad!
CompA start!
CompB start!
CompA update!
CompB update!
@H_
403_2@ 在
属性检查器里通过 CompA 组件右上角齿轮
菜单里的
Move Down
将 CompA 移到 CompB 下面后,
输出:
CompB onLoad!
CompA onLoad!
CompB start!
CompA start!
CompB update!
CompA update!