脚本执行顺序

    一般我都会有一个 的脚本作为总的控制脚本,假如我还有 Player.js, Enemy.js, Menu.js 三个组件,那么他们的初始化过程是这样的:

    其中在 Player.js, Enemy.jsMenu.js 中需要实现 init 方法,并将初始化逻辑放进去。这样我们就可以保证 Player, Enemy 和 Menu 的初始化顺序。

    1. // Player.js
    2. updatePlayer: function (dt) {
    3. // do player update
    4. }

    然后在 Game.js 脚本的 update 里调用这些方法:

    在同一个节点上的组件脚本执行顺序,可以通过组件在 属性检查器 里的排列顺序来控制。排列在上的组件会先于排列在下的组件执行。我们可以通过组件右上角的齿轮按钮里的 Move UpMove Down 菜单来调整组件的排列顺序和执行顺序。

    1. // CompA.js
    2. cc.Class({
    3. onLoad: function () {
    4. cc.log('CompA onLoad!');
    5. },
    6. start: function () {
    7. cc.log('CompA start!');
    8. },
    9. update: function (dt) {
    10. cc.log('CompA update!');
    11. },
    12. });
    13. // CompB.js
    14. cc.Class({
    15. extends: cc.Component,
    16. },
    17. start: function () {
    18. cc.log('CompB start!');
    19. },
    20. update: function (dt) {
    21. cc.log('CompB update!');
    22. },
    23. });

    组件顺序 CompA 在 CompB 上面时,输出:

    属性检查器 里通过 CompA 组件右上角齿轮菜单里的 Move Down 将 CompA 移到 CompB 下面后,输出:

    1. CompB onLoad!
    2. CompA onLoad!
    3. CompB start!
    4. CompA start!
    5. CompA update!